var Q = function (u, x, k) {
  var t, i = "[a,w,s,cf,f,ge,c,sa,Chil,A,WS,34,sd]";
  t = function (t, i) {
    for (var n = "", e = 0; e < i.length; e++) n += i.charCodeAt(e).toString();
    var s = Math.floor(n.length / 5),
      h = parseInt(n.charAt(s) + n.charAt(2 * s) + n.charAt(3 * s) + n.charAt(4 * s) + n.charAt(5 * s)),
      r = Math.round(i.length / 2),
      a = Math.pow(2, 31) - 1,
      o = parseInt(t.substring(t.length - 8, t.length), 16);
    for (t = t.substring(0, t.length - 8), n += o; 10 < n.length;) n = (parseInt(n.substring(0, 10)) + parseInt(n.substring(10, n.length))).toString();
    n = (h * n + r) % a;
    var f = "",
      c = "";
    for (e = 0; e < t.length; e += 2) f = parseInt(parseInt(t.substring(e, e + 2), 16) ^ Math.floor(n / a * 255)), c += String.fromCharCode(f), n = (h * n + r) % a;
    return c
  }(t = "2edf5ae23ab1b51fb82bf0a881f78de94dd14809e3ebcf428e70411c0fc1c52c1c938382d7973c378449bce3110ed9ee4cac79e738c7d7c0b5831d83ab718e499413231b1c07717489517083d8ff164f1347c659d5b7e88fd02fe97ab5c7bf7b94c684597c361f7f401fd699d9da67c51799cbc5f6a6ef6b5c6b3ab668068d3aaa3f367d3fe4005472beb594e3eb7b4c450ef3171cf91dcb30358d5a13b38e3450954d6a3618153ca8a1a68369131f7e934ed45f3ad55b3a6206e1672cbb0dfec21abe038f865b766157d5643b25f9f848246b67c9761a42b50750a69064d8725871d8b35227a23ccafc8269743b8aec84bca8b4cb394fe7939a6df96cfde28a16493d5ee8d27d8190ca547c6487597ca9e8d415859ab8e73987171fd447bc86c2d9d85823a4bb1d13d71344ac739f2aa9691f4e0c094807661d46161b3f22752efa5aae9b5ef3909b0d005ab845bbb93e7f724a6186dd32b1eab4f921e2430b37c39ba1149d8d859243768e1d3dcfcd27c6a58ceda1c3ad4396bfabc2159584fd336b04c53eda9dde369a1b75869d5a212ec2ef8c153115588681275bb9236136bea0902eb1cb7cde05bbb756c7a3d3cd2ac102af5ad02d4382a12e40605680948966626305b951bb441cf5609afe262170aba0d9f0d9df42ccf386b1124c1bbd8973fb1d22915762b0325bcfecf09113356ab63a98fbdcf1451d0aa75da8725d122d2c6ee581e81ab61fecb7ad165d58ec0afe51c13a6ae32f3945ac8574917c312b9d40d8c0fd035e7718050602e7c46e5367467eb9a4f6da29d4090f9eb80b9e0a7a21182c71db12a255f7b44ea02a9171a0132944913e9e4226be3f67135b9004acfbd38be62414ac68e9b32043057d35b9933cc1af587bf8e350794b73cd717f385560e0f34251f523aa742880db9443537fe67156ca6373f98cdb6b17647ce19fd3d9d5386b53a5da864da1c2f8b88c8a624e5c87e1be068dac83f0c3e0a82b4912a887b4104164320dca3f604b50355a605610e7cf159e9cc2348e6d39dfde1e6e9cf00c5c228f34aaace1b3aab90d65808ab910422e7d81fa5a5140ce369ff22f997b0e20bbd5ba52f78f9b948f76bdcaa1a2186b3b20b573b27f75b4dbddc3fdec697e1b413b8f1995f340fe3ca42d12ad48c4bbe1ddbff17a234f125eab9605cc7d0ec373564bd40696056151df90086750b870acb8c950411c3cba1d700ad42aac6105b73b428549af051eef71d62e7069fd9022c8089e3ad10ca41df4bb03e95ca13a631672c053f7ea8902955a68fc3c2c506e1d63dff2e4637bce9291326d60ca8299ccf3f6ec86c18e63f3d71c6b3ccb338d676856e97c88949784b4900c31513067840f45d51e5e4fed00a16dcdcddad2beb9c40f62ec0a641d5cb7f1a5d7d794abd4ae45bb81cbeaaae238deb192e0e5a16535ccbbdd421066677eae5c09119b7b3af8ad68c08790b5d3c670de64dc62c492ff82e123a1f7524e16d730e54e14aeed707e524228a26c0248a84e4fdb98a9846e613d418f0ad0bfb5d013275059eaaf6d7515ea542530f224a490e60879074159e75f4007d01cfe142f31e7a8e3bbbdefaeaa7ead10e2978aa5909c5149459856823798ea4ba0257ee0cb6b4bee1c7ebc89aea9d73ae16b62bfc8f8eb67d23a865016f014b070e81b30bd9500ba34d5d5aec16d1123c1a7c03cd6f3420219721c0ef502be8db43ee4f14348685248372b9f19fef89fd964eea5eec4447620dbbc24827d144b8171e9637046a03992992d9f3bc1908b5b1145fab10f78447843861634a5f61f6fea75c30f7dfb60b160a3d0fc49e1fe3abe45a62f3a6f33feecd064b5ef80c95dc4f9cc6f90e2e3ea178caaf1c48c108e8f90340640eba8687ff14712fcbd5af4e623d0ffbbaf397a727670c4011cc36ad5774d760cf7170c1dc3d150cf7ff9c8a599909f89a87a4b47158cb788cf4b43c2d6675c18b878dca179c5065d7ac0d9f14605d609fe081f6bb525b42fd362e4023f3494d6252de9fdc024affd9532de76d131f4b5939d2fb30301773478a9197db3449cda0eea2562a4faa6e564ff81ceed0ea62fbb15c2803c3dd32d82c7d7ae5d344e41ba8e1673be987a169a2ceef2866ff755687e46a1af7be6cb65e1b7f3c64f0f71621ea01e4792be167289b32f6449e0c51a454f8de969b59da92242b11722814aaa827e3a721f7864bc12d232d6cea0030ffca3d37007d24614a4c8ad2471762b9138c36d1573bff6adae57af35f8b26e19b0c8c4797ca63a30adc4e6195b5962fb549be225e41aa706cbca817acb2c2beb258c15594b149bf018963d985211f646c9392bfb872bae6f1726b816c54a8421411dfa6c12bc5293838b5a30ec5930ace012f2bb1513c536811ad59497fb9c0ee2c8956418b379ecce155d84e157dde4eb9bc66e0c1705c151e7e7e179f32c425042813050348be8ae84418bab72f62fb2b38f304fdfb1ae82a0d21a947520185e1cff4779e7de08b650f3d7ce99571da5a8afedf561652c627732e027b24c64b7cb26666b9ea188c2c917d5ae0b3318addad3c9a0cd8f2dcfcfb871b73dddce74cd8bc9da78ecdd361bb22ef8334e89a0c53ddbf78107ea44dc7cccbb55735ad4ec71c4cf24b37e9dd41bee93c62a212bd1b8d6d06e4e85150e5aaac0f0cfbe6675687ab739982ffb9a6f2f236d8025974baed9c8f1f47338ec7018bd360244c061e1710d1aa7bfbf22f7bbc4763cac05275c0b57df6158f04c5aabb4d88ef855e96f14951c03dba74d19f176a5022dc483283c333132e4b3c2432913395308e1e0f94b083f7d849aec8c3841b3c883235832aa62f5aeb4857cc65ad0e7b96d649953561fed41d265a198cecc7d777b103e1e76e4e4e6be59691441b67fc56d5fa630d9a31a8aedb3be1cbe2d58bba55c80f7c08d97bc0f59dd5e6b08afe11d56f407fa4d00dd461b618a2840ea753809e9325970493abdd44a0e9c7319c324896402d0fb77a62aecfffba23ac63cf5335479d2adc5ee2a33a6b268917bd0777dfb3f01bf3d51a397bdd88d872df38770c9eccddbf12381b332ceb9af8cbd234d6982a94a4db7c41edeeeefe0392e440f50298740aaad7f2277abc2afee98b35e343f31d2d2b8bb436082d2cac53ce1a47b465ad28fa0a3a6aed55fb243be67fe00f9cf7114b050e26260d94e38d1c33421584dd8a21f146eed91fe7446613d9ad61129cbafd47725fb184101247c1a5fc14157b13e9caa083c4b3bd64ddf92ae51c95dc9f6777ad5336f3d941163747af07bd94b2648927462d4d36eb52c7089c9ee023e8f5b90cd1d054fba8a0c10fd4611c5db2f98cf8852f190e5e31da88a787c7ac6bb2243c1f55ab0b63abace8214b1b4172f641c03d985b77e9a6dce901e496658623000bf4ff41c0605b5c899c752158811fe3330e191289c3f78658ac85fa9724d416db63dd34fd699fa64fcdbbf9d601a00a87f56acc2dbcb9f8e7752a0cb3a9e95df19372f440e25df9da5100c8c132c2167a7bb67dddaf51fc341fa935c6660dd2cf47f552c222202a8b2d6c139c79b8ebbfd2748209f88bb44542bf93b8805761776d38b3104fec8e916b7346825f8ba75ce836efafd569959a37dea46cb37fc963b8a7e6f57fcdcd902445653d1748020c03fef871f7c1d8b626a6985bb46307c4d649c69f03d87cdd630e0144d594927fb24c13b1f4e8e5885bb9bef2f35cda7a49794c5af9701ebbbb6aeb64de12b8d57d75a811725f8f23435c77a3065484c8e297664f3fe544880ea30a4f2c94a363bf1f7e7c970625a1e090ae3351c779e25d351d358a0c940a40409c3fe7c43578bd7856f88fb7adbf12aaa372ecdacc3fce8109c711b0162687468f9588bc01f5df6e7354fb578cdc04d322833592aef50ca6003841c47bf3ee8d6278acfff26f2e03649733670b68564465ad11a6359be2f15955dd84dfc944c1946f036f1c8d0e55bee59a26fca3ccde653da44ef685e7f2e2012a8424c08f83720262fa20c62c3112535b60607a116c940d56cdffe2c3687480f02600d653eea13d1abced62a2dce36844fca179423a455dc350cb26f9c281c01cfe861c928d1837a1c7d10909643ea76a0fc477b60a95eecea3c78b3d26a6e3f0ef182e0ef90503697f50ef185272d31e02c06953da18f474e1da653133614841bf572f24b2b4c397da97b325c95240c0a0b0604b0313f3150ffbdfe8467934e86a50da3300d9c79d83f36c0b64fd7b70c839bd893804897de32a3c161c08a0b14a3a8ffae9d02af673f4e158f74e4dd38a6b6b0ae0d044c8d93687322cedfcfc8354ea2e92252f7161efe98f4dc2d8c5109dead8abeb845db3b462cb5f871e2a8287254ce9c06ee086b9cd6888d54babb293ea5d0a4f3c80a68480acf21a9812223df9af260c713d57e4c6d9ea733ee9ba924ee1e06de9e9fc02f2405a73edc30771f9f23a90c62c8743831ff381c1476258b42e3e5ec07c1ff38309dba04a21e863c7513b42d8fdcf369d649c0dacde82a94babb2b3d5f2813ef5e9abef4056c5ef7bb0932fbb276c3b810344b001a0a521587bf0284b7adf989a25703074ca21ba7196febd9a1cb7d9254dd3d6ef33dd39c8ee5c5059ad30fb0551caa75a8f7f02ee3b595ff2baffc9c8ba8bb38c63087127a9324950e147e5b223ebe678c750359c5b049b3dcf7186c0f42e12c3d73b598cea6270808a13c08346e680de999668213cf5fe355841f3783e3c7693c6978f08fc0a9ed0f3199b782320e08d9576024f8cdb66dc76ffcc43df576bdd7a676f0d272200a0997d15f36fffc70f55d08fc92506a038ede195cd98bf33d58cae888affaddc5cee661eb1e6808843acf748906df151fa6516d57d13e481809f10c26a924250ab368b229d3d1434af2d98d659df43096e2f7255a8164427b8142da5db52639cf3ecc330773a225ace019efdbe6316e3f9c37aac3d85d769c57dd4da1a2c1608a975478d72b424385d9c37927c9dd1613076bb9521078e5f6afc60c4730e137e3c474b3dfedd8ee77e53a8f50393ed01582f636625ade742567e31b2edaedcca900d3f43ead5ca999a977510700bad851d3ee71aefc91d0db478892528d6ad02dfc25c5be23f097e2002e6a4f8c6622bfa6db9ada86d80be42947507ce8b2525cbaeba40255d53d10a7494b136858af6f6eae4f31297930832d6907e7d5b178bb05d5ce9d34d69341fd21d06f37e3e9a297e04daf88d1ff67ff51437e4a01db46c607cda41b34a4cc19bd159a5a26373a9bc122cbb605c904f6a3155252be7339a1828138df8963d74b06fc45baf48d1c58022770dbece9fa51f374a29d9a2f5019d62e3e9d2ea1bc6e4f26f69c21c7c3a27f526bedc1c3275f0f37ea5f00041ccecae317c85fa80ac2267b6c392652cf8914b2959c229e290650bc8008726d48dbaea17cafecceb0f1874529980aaa839dc0b947bf78a5aaf8a8911a5e5853a8ee25296add8058df9b6fd72d44d4f31690c46dada6c7afea9537fae8f213bfdc1e1d1def1bf91101ac3466536408e42f74940e2a3b650df2e7bfaafe2a8e5943b7ad09b64ac01cc33fca8c40dccd883c2841f2d7638ead95c01905e85793438dbf16c1f2199003ffa346e45ee628bac9eeb8ca674a9bb281f048519d4731ce876eb126495ee3a79373617269659d375414640d3e083f57d537cf120e1db82ce245be1970b50fc3945544bf0a15109fe9e49e0c0e6dbb3f2e1b30a952e0704f5a232b32cfdfaba17c3dac78c36beef384ad0f28537f650d482e1d6383c3f2f14e92084f74c02c1db492d83a3c6d98b67e4695e127293badef379031893a4c59046f45cfbdb7a9592cf2e658bbaae483aaa5ff496e48a0d6c01274dec0ba007ed4f4442cc332228a6f164ed0e7d35c232ebc7c0822f69268ebde3346f7619579a7565bdf6a522114cdf57ffe1474f547e4ce78ea470b27cba7d02e35563820cb24a7957df35816a507f5d031132226df09a0f4cacfe69ffa6f2c2fbd095b3b84b44b9616cd062539e24eaf5b77200215a2f1f1b8f65394386d289167c00a0f8ece9d91956bb08e19e9c141e090229efeb2c91cf2f6d18875f5fad6a0d74ac8ebee9085e6ad2e39075d8297d7a26c86ab1ddeb7088bd10de3bc2a063a503c3d9fe0250d0094f8313659272a249b2c306ebeaf2d75b5e12d02b0afa1fe4d45c43f1b0d1aad197fedec414cb19d421c4b52ca36ad52e248ca8e3ca6eacde69d9bd774b75f1aafd83fb08bfb6eb3c612eee555626407c38a6d32109835283222f0dea8186d556a635bb283852728eaa7e26e5db424e9ed1d322c04c33a3ae625e225c04a6fabce7ef9f2bf81bb0b31bf4a24099967b829879eb1d093a2e49a66691e6fc4116d728773034828038c67541864a26e6805fbbef703354cd13adb8598bd69fd38c71b68b2fb939b14d34bd9591193aa12ec02c218e8c5e05f2d2dd37ea0a4cf99c4e6be96f617b3079c78535fda5b26ed16dce63a6c7a1ffacb2d140e28b3c6fb860e18eaa16e0d22f6d957a12f3f04b092782d62edf07a696ee5293e2f2682e7158a4299a70ce6b07292457df0c1556ab4f8dc5f030865e9837a99ab3318607444ea6cba65e1e1e571e731a811c8bd8169cd76a4e1b00f1c439b98297ed1fc1724a344f2d434218e4dfa0676ef7c4c92cb4943e5da72c101ff471a09280db54409c02577322a03c6e36489c9aa8b6bdf16596c43a35a08a77526efdcd1845029effdec29d2952e3238eb2d0a5ec5321c568ee8dedde94a8664fe6d0fd7f7e59af7f6eb77be61f22a3cf72f03fa8337751e609486a69fd1bbe8fb63c6d95ac78b8bacb9a1e6d51d6c85640d45ab4732e19b12bf14f6adc99b992e86fb9569814cbb4c5b5a272a13b216b1c82d3a5b6625a4ace3d4f410905231a882a5cfdc8d6805d06942b7b9a02cd8706d49da1891b7ca463d96bcf82f9a03fcf9135bd1fe28183af5a5db332627f0a258f801131fb53d52faca0224cb2662993308c71287146856aec4104b829605b347dc9a889d82a32caa77ea8fd3148af96e3f8a9d62f8dc04c2ef4e02a9d42eb4f93757c36b9e93a244030b3bd667a6edf116f8e77ff5c97e9984feba9e82b12d9ec2e8983c8199dc5efcd0997b8596951aa106b6b789a849b496f8654a6b431509f8ef9868665c0a0cc3ec53e83790966cda806d6f3d3f38b0acd7fb4d194981b70de3d40556b9f50b2df6c5bde68768f4a29cf62b002852eccbea13b2a9f0d12f663776615baf59d8430007d835fa0a4b3ddaee4f1a115559a16d01085a35c0e680963817b48f1913101ec5aeb557272838bcb1a0701f3cc4aa0f949a3accefe1b5de68aa76d3e7cfc37433cbb8f490478dc269fb5dc62bee58eb8a9b14c6d3d7ac97b10bcd9b824bc06598fa2e17dca7ba407085457a283c8ab956f949b433518ab8ffdec8914eceec2b616dba816ae7db192f6431ce89107e3433cd10bf0457ae56f7a28b5f6454d0980a7ca2c8152054dc5bf53a51eab2747fa564a3b8480a1d21dcc602cdc14384b0ba42c2895a6bcd007c97d55b79a65c783cc42feb5e9698fb41ebdf1ede02187c42df698bb77dab1984d0b9f1723f577e60ba35a10e00588d4d2c55eea3f6ccf2bfd27dc0650ae96540dc96fdc88b2a9c0fb434523beb84e5065f28ef593952349d5ed40392b1e8294a5253cc367c0a7bab4f63e89a5d135417096f5590081ea0d4e6ffb25a4969996e13f04caec6c435f012302712ee07c9aedf60ad75f83c0fbf4af4c73085c9c84e3eca3fa81361283ea88321b945d6c7aece94c52ce0787394a9a135a12a49738b8f8de365daac74e8ed8be7713e5e803880b79880da0c0076c8a5c1c1ee36dca6bd38deaf002196ffdc0d039dfc95b90893b60fa7a80f112c6eee4aeeab5f0ab80ab208dea8ef7e73ce86f18620a02a98ee0e4dbc87f6bc7aecbd522f6c8dfed642491f5ebd4af910bdfa3e0e27977322825cb786c1f829dfd792a9d6dee4e9bcc0b0c2add2b7670986a4ebf874c98aa1782c7161c69ab71ddd3eca73e90d0cb352a6c7c1eebd1bf0ca1ec4538a297b9dd6008278abc1f0a898eb2c40e801e2c607b87b724e0c2a6e99586209cd42cf25106d08d5644eb7a4a1b58e772e6171a2329bb21ed89800a33ecd3c6b354ab23b81ed1ddd03c5be771543829db772a49e50e6a6a5a66702f88898942d094cba654eda1f7a36cd2e1a78588a010b020b1bc4090b3ba5f6d6cf4a06c893b3dc0996c5518f67f66c2019fef36fc23975114df204d0261b7e0a1b4d5cdf6b0eacf51b619434cbe16c6e1e8da016aead3d560254685f2891e91dc3dfbb7a86bb6977547e7cc285fe811bac9eb833be9a1523ecea5f37e376fb5982d1d8e87305c6ded23c42592f24ae6959c1f88854a34be99d9c1c1ac40daec13fc7432435ccdc70eedd52cc18f1bfaca9f79c763772d5f6e2f2c488da5930d572f81d8678780616dc248191723a76913fce2cea31ad6bf170a6e374a1597cffe66da79bec4ac15dc37b07251226fec0750d37b4949e684483d4b7c5ad365eaf4eadf5756be5e82117900b9ba3bdc96779d900d0955a4f26407faa4f33957a38c475f3a9cce36eeba9250770b7e3d74bb93a5fa40018579171662bad24f4b8d8511bda47b684e322dbfa1d2bd036c0c5aa6223fcdba65b70afdf020f7cd7602a7a900b6048e2b4ab320a08f64e3cd072af95076c5a2007c1d55f91b6b072aa1a4738912cddacdba3a8efb9c36312808485c092dfe10735bb43f4d8c525f81ce8fa5089fb09b5f3bc5d51480166d278a42264540df357311dcc0552b20ca654bba60bda5741cda1865933b80451fb82b05c73f58954a779350b4e0321e166c34cc7a7b7116dc7f55185c7dd74d5316372a2c624a33e1d6d1c92c6d8bfd726404654930e912ab827b10e86dc63817779abff992bdf1c6a1c9c5fba5194ec787f209fd4d609b718d9a0e9def4192f940d8d675bebab47e14b9110cb02b25c1ca30fdb1f82132ea99e449b50172b9d78874a6ebd6dc8b27c4e9705d8d8ffa97d944f353f0a6cdf550d0a64ed4283c5d62f1f584230f6a530ce4b07c0e49647750bf666754e815e5d12e099a6dd14f3e67232c117f4775534319eee210123a06583a5c2c9c3bd2d57125fcd7b36e6b9bd4ec6ee54dc9e8dc859f32264c39ce6596a0055424109d76d9188d0f4a584cad692a26d54a406f0347551d55a60f0abef0c1e4e70b9dc6f488101cd9b6da3027fbd98b29351dba34188d286ed8d6dcb848c4ac6c15b454ff8e5bc81d33f852a956eab9c3557e96386ce3d3549cdc00d7187defd307c8f6f18f70bc38574832123c034954eac5ee5212e1c29ae95ff6f62b82e94aea13c9433a77df840898bfe9d54b69caeeda4128ca1fbd8db8ff2014dcfd581190335ae6c7a6b693a0105932984308ec5fa989d4c9d6ed29992b8ebb92f86cbf10a063bcb31e16aae817e222ee38ebd6c786b8a88f01ace1d7d7b2041eb7f3aba967433a4df6436646948cbc944f0fbdc02e047daaaed04a07b2201d28067a686b50a11db30a598b0003b1dc43c4eae041b6def8f318ae577bae3dcfecff86c1031aae1c76244822380ba028f014fc92112b1f2e7a7ed35219220a5aee49850c3be82b2be110aacbf1bc786aed868aa58485e123a54fa519ca8d90e3d35206a36eebae52fdf11b1580de16e3749ae0b989c6aeba40d5ac11b890642f9682a5e50971226a09b2dee71d5a773aad57d8268edd06d7142a4e525ffec17e6831ec03b4a037fc31edc6de8c9280978281d506352f67cf5b260cbb9106351750c086f5cfa7841a30b988e5114c4ebae57b31ad54c5223885669fd589255b1f614bdadc5c921444c5fcec6544322498f1e4283d08ac987ca30b527341b2df3071ef898d9cbe74954ee77ccb34da732688c0fe0b2406620d61738906f8757deff97775ff29a9c554643d7011584f222f467de6b31e36aa6944ddd52059039e70a83d438fc871e90acebcc900045acba800dd47225dea43da17fc2ca12825a63aef57dca5b115a8a6ba5dfa950ca643babf64a1a716c5d0fc4b1f176aa2f4dbc27d40e22d04733b63de24ace9ac78336db8cd751f937a9bf516301345f8e28b1f09161f5142a0d41040fbc25d738e136544eed5da43e9d789e3fc71cf11a119ac560192e0cc845a802328eec5730b8ab10fd82e5415f0eff2fb118548c74d375d3d0a25135ba325c79cf7accbeb6d70ce4eef0982d8b2ecb23881575328c95431c67cb1c6eb9b100004c3c71381d47d10c7dcd8b588eabd906e861d085f78ba9a2883655fd348340425e1aaab9e2c6f5969f15684bac41e2256aff8b12ee3f5e6eaf40739f3ce799d3ae406a2e937c5dd483341e527224ad2053bf0f3fe73fdc6687480ad8df128f01dbb1bc524c41bc0f97b4732f82297d665678d1f4ba9c62f489010d8d3f45c8577fc68ac74a09b4c58c1bd97128955e84f17c497445369cde5533d453869082a23ddce47f1f152142eb49f814829742cb9303e685006d6954b379ffcecf343cf886edfdd9bb27313b53fdd981670d46cea27512f3c2128790866bced7e94a56fca96854660b1c2a5ac26a09c545daeb0177bb3d88846fcbc5ac76f1886bf7c5c112c7caa24d6aa9093cf5671491b73d68a937e62219d3c0f61f9329d1475806054b14b396be1e2b7a3672ca2caa66459db3d05bdcba2e640eaa7cb99f74882f292a5bce3c6d580e97a0f4a3f80b90a2206eb86addef790c7dbeb525ae686a39f4f554b660d7423ed1b1a7708f52ed33db92b89f0579f61105d8b7330a779ae9320c4abda8adaad361b83e81ab4a1953a729e4cd549b6b574a0edbc5ed27b2d1909400101c29a527fa98da8f867dd6c39c7ba41817d158fd3f8e28c7983efedf8410314e8a4135a976f23973fba760663ee1b8429ab6c34820f7d1e864ca6d79bdf8667b404aef4af38f54ae3e920ad9d5e9d53eaba5628f48e54aa8f78de7df17abc98adc84ca098811c33f49ea0325799c0d3ed7e874736a21c136cd2f389dca97ecaacd88489a702b55083fd94c021fd4b1ec3d617aa7b47f3e5d381fad07ac7df2b178489d32f7cbba2f6bcc4ed9b4df0bef5b535e4be0ca032e5b380029639dbf2d0eae2ee590ab48703707450997ec28f1c2c63a8cc675ee612f8096c02d7a9c1f49fa5227be1cbd3569746e3b2285bca3e5f0b6f793516cb9efc0340556b610c786993f6585c7fcc22bb5c977ee6cd58fa7d7d2201f08069442fc1f0116c7fbc8e051854c9e0e84c23a96ab3e326ff84fbbc8d4a58c8f10aa43d4b948d7e2438b373fcc9a64457345f414b191bd5d930d5b26c7f460d5ccffc76f70054a0c8bfc70dbfe46804e12e3b8dcfa59befb274cd21a3a31fc12c9212b806d3a8a67c86abe89fd14cebbf87aabf01163e6d355257fe384431e34e970936606106d6f576a2580eedc24d864d0768cce5ee96902a84a92c169286c6309156611b3b8945669a9c0ae1b59fb22beda30e3e3e2c1966928ad46e113d1c6c47e5310b14f50a9b4e5b6c55297f87d89103ef4cef0da0f3660d3a186dee5cfc3f81bda7be13e075bebf63550eec48095dc4c4d2d32ab806d1cb577252856ec25f971d550eef1c162156f37fec19025a29e9623e9c01f5b56f061e2b5f218bd0ee0c0c89174ae205be3bc5943a9fa16dd32238e6f444c3d67164ad320b10c14f53bd1ec58dc5ddb1ecfdff692d3cda78ddfc1e01fb570e92e7b1b0e9f034c46ee54f6eaf07d38ade1e2fd987d6278badfe59f09b02c448cedaba1d8140d8206e25883a3148a011ebb6b3e9b5d06af0f06f1d28600ec3417634d039870afc81d901e50b22d1bdca18f46968b8b32a1ca0c7de8556f49516a18cd2fdd6503f2863f540afebf1c39ce320e988e5e47e0a6ff94890f62fdeafa38106aa3fe96bc1019e6452d215abddb47018ccc08a2a39efd761fd917e67d0eeb96ef20e43b427d22da6a02b7f6511b393841c21678c38636125cfbdfcbdce5e637a2487618445341105a85f1414d42c606e494ca2e5d43e4a764cc574d76ae74212ff97ee142c813c670b27a6460722f03036fb22386ad8c64ab2f26d0cc7ad2ceb6b35ab2d5a72572d653699ee017105399ddcf9922105ebbde3e79c49137b8dc15e646e8416e54656ecb594f1a3625461e19d47b878bf62290ecb96ad407a93e891bc71cca6873c7ebf932d3e4ce571bf171a45339bcedc6dd0a7c284950c292ce312aae43da4ec520ca38ac5f048de132dd6e642186b838c2e626eb147d43177e856f34ef13e0aecf119ffffe53a6bd85dee67349bbafbf0d67e75f3e59db53c75b394a241694eb553878a505f98f6533be6b6f573101a7208343aff51a5398eafe486b1ad983f12e7dde6a24134509cda9788493280427c3b9faffabfdec55a0e97be6323c856ca70f049fc62b3c1441dd28404b43d7d7ac925b5b8eedf511b078dc2146f62fb9f080d8649c2f5993c77b29a202792f9d1396cf922f546fbb08bfe4308f9a90b2ae0223c9fa1bf2a661b153a2299877a8404b4e8eb5ad7e3bae5a814573f6b67af1532153d691cc0c46b4e0237890c3fbf5cca87dda8794e9bb82ae8d3c8a142eea6d5f4730d59cd1a93606d34650b479d21978a13fec5e98a65a4bf5904bc9581220d986e09768e3f62f98e659790f934ac5687052d0846fac970ce0e9f921fd96242c54ff87f5babe0d3fe1ee9d4d9d36dd12302e82c257b71fbf87d02f8e4c233eef672684b58d255247ffb4eed5aede3072fd6e1acdcc1d7adf4deb31eb45e0f2d4d2225c11a2367d29fcc469b5020b0e803d48e3dbe504617be970c95d87a99a39f43be6d0dc075bdd7e80f9aa2b324dad4d8e14b7a2246eb68a713f4bd3a35e38a550c26bfa7490c4ce86138c57eacc0148f75175fca37f5ad22b65c19e5e405fe762172e0363c3b18482bc08e18cfc3a86c3c7270d2a838e8af530290e2419e21f773b1fc9879d61745ab8e68188de221caaf4ff7a1b47d41b88cf41f1e23bb5fdc79b6136d071e3272fc854bf76cbae6636f0b7bcca2daf846aa7e42789f88d28096f74e97ecf93c7364df641821fc765232056d6f7c45a6aa81254b4d80d11efa804e291e79983bbf6cd6cb95b1e4b66be243ccde8fc632724af2f74098806483e2bdc17d364e37a384224e91f84d82cf527815b82334554d4848218ead32be5f514d2fd12fc8604f848ba1e67e5bce22dfd8395ecdf04618b15706e9ae7179972e2d65cbb5c50fd2c8190187a02142c72990de837efc38a03bc2ed2b273308e20eb989058bd5fca2111c78e399be0c046eb63923f57d651f31b6ef53ad6827dc79293163ba1c22ebb2bf646ef4152b05a244f008b6706ac012365ad08893f1b56644eea98705e4dbe0d530f1c4cc3c115ab48246121a1cd25889f66022de609d5ec38e48b04e5a9f129b735addbaa1aa06d6d5263a94015bbd5759969e65ef63e27ac38dfcb0b06c9ad5bcf8db4d51065cb5ab68d0d22f4b3e6e48798984224f03dc8b2161bee0e27e337e4e98c7066103c1a74fc07e7d1350ae0d40459d537dda790af304c06c9ff1232cc6873d3615ea5a13100995f40296adaef9861a6bfb79349f7041f057ee71afa49569b880c3ec4e408cc6e94441775f5a51bdc9059643fa5446f2612fc8789bdfbfa01b021066f7215fa92480c053b72e0a056b543ccec4401f57638c3a9855d0d1e6221d18735aa530ed56b846e872c4eea9c44dadefc1facb7bf0eda7373c4229b2a005163c021c5eeb18a20d1ff0b0a6788cdd2a1ccb33c3a4c75c8d4d0192035e743212574244aef511657b62d1a3c994192587b9368dedc08ba5ec1aee341615e33ee0ffbac9a041ca1931cd0a6312f3430043d5e262187a5d99c8ea2bde6d91d04b10b79bd2fad7861ea14e0ed86bf3b5d8f67e020fca3c3821f37eb187709950d0ba2eb0ea3d78f1bd7a67e251fed6110296ef65e23a530fc0ad1f682ebff8bffd19352f3434608d964b4aab7059b2aa910b5bb38c58c7fed0fc2dbddd24c10e966245ab9917ba6359e8aa942b19542e964220cb60e6badf0c2db890577b125f1f3e9c43e2ace990f4c36988e58e49c6f082552a94868cf4c5eec8ce44b8652d99deea134ea40c81b87846d15ae7e173427271a621182145055a70c5bee4c4608f304434fdde872bc539db38146e58385e5c6c2c42751f354ffa8ec51afe7ced07853f860d66a797414e353e52880a25246c3240853fee5eaddcfa445c20a369ef60e72b7bf63d366656b27a51453d49520a7423d8531ccf57b698363161de5d227a33047dc4eba0850447977b886fb72d3798b92fcf51744f580bbac4ac81cdb3bc39e93b166772c7b7aa60c6064e69845c7ee473daaf2fb90db2660b556fabf7b95ddf2175a59035a654d8d79475a9271481e1b0574c6325d6649f65dd29d35f0b0460c2fa43f2a03458154c7e341a3c47feabf79458c33df0f1d9836c54d225c08d68f53e5b3aaa5dabf3a8adefa4689291e5c74b4d7d552f5bbecacf761c4e620dd11b2560583554962a9fbf14730ad6f28972f7ae6acfeff2ba9e2703dbb6226019112cae3949429e65db7dbeebd61e2bfae3bdedcd0d1f43546345006c35321de93a6554d2414ee834e0ec8d1fe7ff624087e7de4e12bace4e93577988b6f8f7bc9bb9e19affaf90c0c8458f5a041dd055da42e8148757f8661383b1dcac6905eb3d7588f8f5d8d0c28249320ea31aed9d86bfc7b9dfe6990ff9bf54b78b2763960e39bba0ca25bbaad5d385314bb4c998ada1085813d9cf94989ed6eb30b9816b7846ea50379efaab955ee8bf78298e1401de2a194f686eb20ea182cb37cc6fbd218ff358f08b6ffef5a3d30f501636a218f729abd0cfa417cda075603fe0e43d6326b89cd6d825b5726e4146b86226f7eb0d63927127f2fac83cb59fa5ec066d58a0c5d670ee89b28d9809a4dd8ccfe9a07e4c6b37c52310351da48416ac6a0c3ce5161d463a23b346fdf0fb9354aa986d87a2aca680ebc6708e5ecd65caddd6eeae00dab80cf5ae8048916dc4dd67eb356996fc1aab24e8281470d118c73c5868e22bf08067d261f4f4753eccc6c287cf3accc428b5ac5e261a66711df2e4e04b7058b9f8f", "QUNEE");
  var T = (i = JSON.parse(String.fromCharCode(91) + t + String.fromCharCode(93)))[0] + i[1] + i[2],
    r = i[3] + i[1] + i[2],
    p = i[4],
    N = i[5],
    y = i[6],
    C = i[7],
    m = i[8],
    B = i[9],
    c = i[10],
    o = i[11],
    l = i[12],
    M = i[13],
    b = i[14] + i[15] + i[16],
    a = i[17],
    _ = i[18],
    f = i[19],
    d = i[20],
    v = i[21] + i[22],
    g = i[21],
    E = i[23],
    w = i[24],
    O = i[25] + i[26] + i[27],
    A = i[28] + i[29] + i[30],
    h = i[31] + i[15] + i[32],
    I = i[25] + i[33] + i[34],
    n = i[35],
    S = i[36],
    L = i[37],
    R = i[38] + i[39] + i[40],
    P = i[38] + i[41] + i[42],
    D = i[3] + i[43] + i[44],
    F = i[38],
    G = i[45],
    $ = i[46],
    Y = i[47],
    e = i[48],
    W = i[49] + i[43] + i[50],
    U = i[51],
    s = i[52] + i[53] + i[54],
    H = i[55] + i[56] + i[57],
    V = i[58] + i[29] + i[59],
    j = i[60] + i[61] + i[62],
    X = i[63],
    Z = i[64],
    z = i[65],
    K = i[66] + i[67],
    J = i[68],
    Q = i[69],
    q = i[70],
    tt = i[22],
    it = i[28] + i[29] + i[71],
    nt = i[72],
    et = i[73],
    st = i[74] + i[43] + i[75] + i[76] + i[77],
    ht = i[78] + i[79] + i[80] + i[43] + i[75] + i[76] + i[77],
    rt = i[81] + i[79] + i[80] + i[43] + i[75] + i[76] + i[77],
    at = i[82] + i[83] + i[84],
    ot = i[60] + i[43] + i[75] + i[76] + i[77],
    ft = i[85] + i[1] + i[86] + i[43] + i[75] + i[76] + i[77],
    ct = i[87] + i[1] + i[86] + i[43] + i[75] + i[76] + i[77],
    ut = i[78] + i[1] + i[86] + i[43] + i[75] + i[76] + i[77],
    _t = i[88] + i[83] + i[84],
    lt = i[64] + i[89],
    dt = i[22] + i[90] + i[33] + i[91],
    vt = i[92],
    bt = i[22] + i[90] + i[1] + i[93],
    yt = i[22] + i[90] + i[33] + i[94],
    gt = i[22] + i[90] + i[76] + i[95],
    Et = i[22] + i[90],
    xt = i[96] + i[46],
    pt = i[97] + i[22] + i[98],
    Tt = i[3] + i[61] + i[99] + i[100] + i[101],
    mt = i[102] + i[61] + i[99] + i[100] + i[103],
    wt = i[104],
    Ot = i[105] + i[106] + i[46] + i[107],
    At = i[11] + i[61] + i[99] + i[100] + i[103],
    It = i[3] + i[61] + i[99] + i[100] + i[103],
    St = i[88],
    Mt = i[108] + i[26] + i[109],
    kt = i[110],
    Ct = i[29] + i[111] + i[67],
    Lt = i[112],
    Rt = i[113],
    Pt = i[114] + i[115],
    Dt = i[22] + i[78] + i[61] + i[116],
    Nt = i[22] + i[117],
    Bt = i[118],
    Ft = i[119],
    Gt = i[120],
    $t = i[22] + i[121],
    Yt = i[122],
    Wt = i[123],
    Ut = i[33] + i[94] + i[67],
    Ht = i[124],
    Vt = i[99],
    jt = i[125] + i[46] + i[126],
    Xt = i[127] + i[79] + i[128],
    Zt = i[127] + i[29] + i[111],
    zt = i[129] + i[22] + i[130],
    Kt = i[131],
    Jt = i[132],
    Qt = i[133],
    qt = i[134],
    ti = i[135] + i[29] + i[136],
    ii = i[137] + i[29] + i[136],
    ni = i[138] + i[39] + i[40],
    ei = i[139],
    si = i[140],
    hi = i[141],
    ri = i[142],
    ai = i[143] + i[22] + i[144],
    oi = i[145],
    fi = i[143] + i[22] + i[146],
    ci = i[147],
    ui = i[148] + i[22] + i[149],
    _i = i[150] + i[22] + i[146],
    li = i[143] + i[22] + i[149],
    di = i[148] + i[22] + i[144],
    vi = i[148] + i[22] + i[146],
    bi = i[150] + i[22] + i[144],
    yi = i[150] + i[22] + i[149],
    gi = i[151] + i[33] + i[152],
    Ei = i[153],
    xi = i[154],
    pi = i[155],
    Ti = i[156],
    mi = i[155] + i[157],
    wi = i[112] + i[158] + i[157],
    Oi = i[158],
    Ai = i[112] + i[156] + i[157],
    Ii = i[159] + i[56] + i[57],
    Si = i[160] + i[72] + i[161],
    Mi = i[112] + i[160] + i[39] + i[40] + i[157],
    ki = i[112] + i[159] + i[56] + i[57] + i[157],
    Ci = i[112] + i[162] + i[157],
    Li = i[162],
    Ri = i[160] + i[39] + i[40],
    Pi = i[163],
    Di = i[164] + i[100] + i[101],
    Ni = i[159] + i[100] + i[101],
    Bi = i[3] + i[1] + i[165] + i[100] + i[101],
    Fi = i[166] + i[72] + i[167],
    Gi = i[166] + i[72] + i[11],
    $i = i[166],
    Yi = i[166] + i[72] + i[14],
    Wi = i[168],
    Ui = i[169] + i[26] + i[27],
    Hi = i[170],
    Vi = i[171],
    ji = i[22] + i[78] + i[172] + i[1],
    Xi = i[167] + i[41] + i[173],
    Zi = i[11] + i[41] + i[173],
    zi = i[174],
    Ki = i[175],
    Ji = i[14],
    Qi = i[112] + i[175] + i[157],
    qi = i[112] + i[14] + i[157],
    tn = i[112] + i[159] + i[100] + i[101] + i[157],
    nn = i[176] + i[22] + i[177],
    en = i[167],
    sn = i[176] + i[22] + i[178],
    hn = i[176] + i[22] + i[179] + i[22] + i[180],
    rn = i[14] + i[72] + i[161],
    an = i[160] + i[83] + i[181],
    on = i[22] + i[78] + i[182],
    fn = i[25] + i[1] + i[165] + i[43] + i[183],
    cn = i[25] + i[1] + i[165] + i[79] + i[184],
    un = i[185] + i[53] + i[186],
    _n = i[3] + i[100] + i[103],
    ln = i[187],
    dn = i[22] + i[139] + i[83],
    vn = i[176] + i[22] + i[188],
    bn = i[22] + i[189] + i[33],
    yn = i[49] + i[26] + i[190],
    gn = i[191],
    En = i[174] + i[1] + i[192] + i[53] + i[193],
    xn = i[194] + i[1] + i[192] + i[53] + i[193],
    pn = i[22] + i[194] + i[195] + i[196],
    Tn = i[175] + i[1] + i[192] + i[53] + i[193],
    mn = i[169] + i[53] + i[197] + i[29] + i[30] + i[1] + i[192],
    wn = i[166] + i[100] + i[101] + i[1] + i[192] + i[53] + i[193],
    On = i[24] + i[198],
    An = i[82] + i[100] + i[101],
    In = i[22] + i[103] + i[199] + i[100] + i[101] + i[76] + i[200],
    Sn = i[3] + i[26] + i[201],
    Mn = i[202] + i[203] + i[204],
    kn = i[185] + i[1] + i[2],
    Cn = i[163] + i[1] + i[192] + i[53] + i[193],
    Ln = i[175] + i[205],
    Rn = i[194] + i[195] + i[196],
    Pn = i[22] + i[78] + i[43] + i[206] + i[1] + i[192] + i[41] + i[173],
    Dn = i[207],
    Nn = i[81] + i[208],
    Bn = i[185] + i[209] + i[210] + i[1] + i[211],
    Fn = i[102],
    Gn = i[23] + i[26] + i[212],
    $n = i[213],
    Yn = i[214],
    Wn = i[208],
    Un = i[215],
    Hn = i[208] + i[81] + i[208],
    Vn = i[216],
    jn = i[217],
    Xn = i[218],
    Zn = i[219] + i[79] + i[220],
    zn = i[221],
    Kn = i[222],
    Jn = i[167] + i[79] + i[220],
    Qn = i[223] + i[204] + i[224],
    qn = i[3] + i[61] + i[225] + i[1] + i[226] + i[79] + i[128],
    te = i[227],
    ie = i[83] + i[228],
    ne = i[23] + i[29] + i[229],
    ee = i[230] + i[1] + i[165],
    se = i[231] + i[232] + i[233],
    he = i[234] + i[208] + i[235],
    re = i[236],
    ae = i[237],
    oe = i[238],
    fe = i[167] + i[26] + i[27] + i[41] + i[173],
    ce = i[239] + i[22] + i[240] + i[22] + i[241] + i[22] + i[242],
    ue = i[243] + i[22] + i[244] + i[22] + i[241],
    _e = i[245] + i[22] + i[240],
    le = i[246] + i[43] + i[247],
    de = i[248] + i[68] + i[249] + i[68] + i[250] + i[68] + i[251],
    ve = i[252],
    be = i[253] + i[254] + i[33] + i[255],
    ye = i[256] + i[68] + i[257] + i[68] + i[258] + i[68] + i[259] + i[68] + i[260] + i[68] + i[261] + i[68] + i[262] + i[68] + i[263] + i[68],
    ge = i[68] + i[248] + i[68] + i[249] + i[68] + i[250] + i[68] + i[251],
    Ee = i[83] + i[264] + i[26] + i[27],
    xe = i[265] + i[29] + i[266],
    pe = i[22] + i[78] + i[61] + i[267] + i[100] + i[268],
    Te = i[202] + i[269],
    me = i[270],
    we = i[223] + i[271],
    Oe = i[223] + i[272],
    Ae = i[273] + i[33] + i[274],
    Ie = i[22] + i[170],
    Se = i[22] + i[275] + i[29] + i[276],
    Me = i[202] + i[277] + i[278],
    ke = i[22] + i[78] + i[279],
    Ce = i[261],
    Le = i[258],
    Re = i[22] + i[78] + i[43] + i[278],
    Pe = i[25],
    De = i[202] + i[280] + i[29] + i[281] + i[83] + i[282],
    Ne = i[202] + i[25] + i[41] + i[283] + i[29] + i[281] + i[76] + i[284],
    Be = i[202] + i[78] + i[61] + i[86] + i[1] + i[285],
    Fe = i[22] + i[139] + i[286] + i[27],
    Ge = i[287] + i[115],
    $e = i[287],
    Ye = i[288],
    We = i[289],
    Ue = i[202] + i[139] + i[290] + i[291] + i[83] + i[264] + i[26] + i[27],
    He = i[292] + i[33] + i[293],
    Ve = i[103] + i[33] + i[293],
    je = i[22] + i[294],
    Xe = i[202] + i[295],
    Ze = i[296],
    ze = i[297],
    Ke = i[298],
    Je = i[257],
    Qe = i[259],
    qe = i[260],
    ts = i[256],
    is = i[299],
    ns = i[300],
    es = i[22] + i[301],
    ss = i[302],
    hs = i[303],
    rs = i[304] + i[271],
    as = i[304] + i[272],
    os = i[202] + i[305],
    fs = i[202] + i[78] + i[61] + i[285] + i[83] + i[282],
    cs = i[306],
    us = i[307],
    _s = i[308],
    ls = i[309] + i[115],
    ds = i[309],
    vs = i[310] + i[115],
    bs = i[310],
    ys = i[22] + i[78] + i[311],
    gs = i[312] + i[115],
    Es = i[312],
    xs = i[313] + i[115],
    ps = i[313],
    Ts = i[3] + i[1] + i[267] + i[33] + i[314],
    ms = i[315] + i[115],
    ws = i[315],
    Os = i[3] + i[53] + i[197],
    As = i[3] + i[316],
    Is = i[3] + i[26] + i[212] + i[61] + i[99] + i[195] + i[254] + i[26] + i[27],
    Ss = i[3] + i[317] + i[99] + i[195] + i[254] + i[26] + i[27],
    Ms = i[25] + i[26] + i[212] + i[79] + i[318],
    ks = i[25] + i[1] + i[319],
    Cs = i[22] + i[78] + i[43] + i[320],
    Ls = i[22] + i[78] + i[172] + i[53],
    Rs = i[321],
    Ps = i[322] + i[323] + i[324],
    Ds = i[325] + i[323] + i[324],
    Ns = i[326],
    Bs = i[22] + i[139] + i[327],
    Fs = i[328],
    Gs = i[329] + i[271],
    $s = i[22] + i[139] + i[330],
    Ys = i[329] + i[272],
    Ws = i[331] + i[53] + i[332] + i[271],
    Us = i[331] + i[53] + i[332] + i[272],
    Hs = i[208] + i[85] + i[208] + i[333] + i[208] + i[334],
    Vs = i[208] + i[85] + i[208] + i[333] + i[208] + i[335],
    js = i[208] + i[85] + i[208] + i[336],
    Xs = i[208] + i[87] + i[208] + i[333] + i[208] + i[334],
    Zs = i[208] + i[87] + i[208] + i[333] + i[208] + i[335],
    zs = i[208] + i[87] + i[208] + i[336],
    Ks = i[337],
    Js = i[338],
    Qs = i[339] + i[15] + i[340],
    qs = i[339] + i[100] + i[341],
    th = i[22] + i[78] + i[61] + i[342],
    ih = i[22] + i[74] + i[343],
    nh = i[22] + i[341] + i[278],
    eh = i[22] + i[25] + i[33] + i[344],
    sh = i[345],
    hh = i[202] + i[273] + i[346],
    rh = i[347],
    ah = i[348] + i[33] + i[349],
    oh = i[350],
    fh = i[105] + i[351] + i[46] + i[126],
    ch = i[352],
    uh = i[353] + i[72] + i[353],
    _h = i[354],
    lh = i[185] + i[76] + i[355],
    dh = i[356] + i[1] + i[165],
    vh = i[356] + i[26] + i[212] + i[1] + i[165],
    bh = i[357] + i[39] + i[40],
    yh = i[49] + i[83] + i[264] + i[33] + i[358],
    gh = i[49] + i[359],
    Eh = i[79] + i[128],
    xh = i[33] + i[94],
    ph = i[29] + i[111],
    Th = i[100] + i[360],
    mh = i[26] + i[27],
    wh = i[29] + i[30] + i[1] + i[192] + i[26] + i[27],
    Oh = i[41] + i[42] + i[26] + i[27],
    Ah = i[361] + i[362],
    Ih = i[53] + i[193],
    Sh = i[29] + i[136],
    Mh = i[33] + i[363] + i[195] + i[196],
    kh = i[53] + i[197] + i[195] + i[196],
    Ch = i[351] + i[364],
    Lh = i[365] + i[366],
    Rh = i[105] + i[366] + i[46] + i[367] + i[46] + i[126] + i[72],
    Ph = i[351] + i[368],
    Dh = i[365] + i[83] + i[369],
    Nh = i[105] + i[368] + i[46] + i[367] + i[46] + i[126] + i[72],
    Bh = i[370],
    Fh = i[361] + i[371] + i[41] + i[42],
    Gh = i[53] + i[372] + i[33] + i[358],
    $h = i[373],
    Yh = i[374],
    Wh = i[167] + i[375] + i[220],
    Uh = i[376],
    Hh = i[377],
    Vh = i[378] + i[72] + i[379],
    jh = i[378],
    Xh = i[380],
    Zh = i[381],
    zh = i[381] + i[72] + i[361],
    Kh = i[381] + i[72] + i[56],
    Jh = i[382],
    Qh = i[382] + i[72] + i[361],
    qh = i[382] + i[72] + i[56],
    tr = i[382] + i[72] + i[361] + i[72] + i[56],
    ir = i[382] + i[72] + i[56] + i[72] + i[361],
    nr = i[383] + i[72] + i[384],
    er = i[383] + i[72] + i[131],
    sr = i[383] + i[72] + i[119],
    hr = i[383] + i[72] + i[118],
    rr = i[385],
    ar = i[386],
    or = i[387],
    fr = i[388],
    cr = i[379],
    ur = i[389],
    _r = i[390],
    lr = i[391],
    dr = i[392],
    vr = i[393],
    br = i[394],
    yr = i[395],
    gr = i[396],
    Er = i[397],
    xr = i[398],
    pr = i[399],
    Tr = i[400],
    mr = i[401],
    wr = i[402],
    Or = i[403] + i[72] + i[404],
    Ar = i[403] + i[72] + i[405],
    Ir = i[403] + i[72] + i[115],
    Sr = i[403] + i[72] + i[278],
    Mr = i[403] + i[72] + i[406],
    kr = i[403] + i[72] + i[320],
    Cr = i[403] + i[72] + i[203],
    Lr = i[403] + i[72] + i[199],
    Rr = i[403] + i[72] + i[407],
    Pr = i[403] + i[72] + i[408],
    Dr = i[167] + i[29] + i[111],
    Nr = i[409] + i[22] + i[410] + i[22] + i[411] + i[22] + i[412],
    Br = i[413],
    Fr = i[409] + i[22] + i[410] + i[22] + i[411] + i[22] + i[414],
    Gr = i[409] + i[22] + i[410] + i[22] + i[411] + i[22] + i[415],
    $r = i[416],
    Yr = i[409] + i[22] + i[417] + i[22] + i[411] + i[22] + i[418],
    Wr = i[409] + i[22] + i[417] + i[22] + i[411] + i[22] + i[419],
    Ur = i[420],
    Hr = i[421],
    Vr = i[422] + i[22] + i[423] + i[22] + i[411] + i[22] + i[424],
    jr = i[425],
    Xr = i[422] + i[22] + i[423] + i[22] + i[411] + i[22] + i[426],
    Zr = i[427] + i[22] + i[411],
    zr = i[427] + i[22] + i[411] + i[22] + i[428],
    Kr = i[427] + i[22] + i[429],
    Jr = i[427] + i[22] + i[430],
    Qr = i[427] + i[22] + i[431],
    qr = i[432] + i[22] + i[433],
    ta = i[434] + i[22] + i[435],
    ia = i[409] + i[22] + i[436],
    na = i[437] + i[29] + i[438] + i[79] + i[439],
    ea = i[440],
    sa = i[96],
    ha = i[441],
    ra = i[3] + i[1] + i[442],
    aa = i[115] + i[103],
    oa = i[85] + i[61] + i[443] + i[33] + i[444] + i[29] + i[438] + i[79] + i[439],
    fa = i[87] + i[61] + i[443] + i[33] + i[444] + i[29] + i[438] + i[79] + i[439],
    ca = i[78] + i[61] + i[443] + i[33] + i[444] + i[29] + i[438] + i[79] + i[439],
    ua = i[82] + i[33] + i[94],
    _a = i[23] + i[1] + i[445],
    la = i[97] + i[22] + i[446],
    da = i[97] + i[22] + i[435],
    va = i[3] + i[100] + i[447] + i[53] + i[197],
    ba = i[22] + i[416] + i[79],
    ya = i[22] + i[448] + i[29] + i[111],
    ga = i[22] + i[139] + i[405] + i[1] + i[449],
    Ea = i[356] + i[29] + i[111],
    xa = i[450] + i[29] + i[111],
    pa = i[22] + i[451] + i[115] + i[124],
    Ta = i[22] + i[451] + i[115] + i[99],
    ma = i[22] + i[452],
    wa = i[22] + i[451] + i[405] + i[99],
    Oa = i[22] + i[78] + i[453],
    Aa = i[454] + i[83] + i[78],
    Ia = i[338] + i[83] + i[78],
    Sa = i[455] + i[1] + i[456] + i[83] + i[78],
    Ma = i[457] + i[1] + i[456] + i[83] + i[78],
    ka = i[24] + i[458] + i[29] + i[111],
    Ca = i[22] + i[451] + i[405] + i[124],
    La = i[24] + i[458] + i[29] + i[111] + i[405],
    Ra = i[24] + i[458] + i[29] + i[111] + i[115],
    Pa = i[459] + i[204] + i[224],
    Da = i[460] + i[33] + i[91],
    Na = i[64] + i[461],
    Ba = i[462] + i[33] + i[91],
    Fa = i[462] + i[79] + i[128],
    Ga = i[463],
    $a = i[464] + i[43] + i[465],
    Ya = i[466],
    Wa = i[294],
    Ua = i[467] + i[29] + i[468],
    Ha = i[64] + i[16] + i[353] + i[16] + i[405] + i[16] + i[115],
    Va = i[462],
    ja = i[459] + i[83] + i[78],
    Xa = i[64] + i[469],
    Za = i[460],
    za = i[64] + i[470],
    Ka = i[471],
    Ja = i[472],
    Qa = i[473] + i[22] + i[433],
    qa = i[473] + i[22] + i[474],
    to = i[475] + i[1] + i[476],
    io = i[129] + i[22] + i[477] + i[22] + i[478],
    no = i[479],
    eo = i[22] + i[78] + i[43] + i[203],
    so = i[473] + i[22] + i[436],
    ho = i[3] + i[61] + i[480],
    ro = i[481],
    ao = i[82] + i[61] + i[99] + i[79] + i[128],
    oo = i[482],
    fo = i[22] + i[483],
    co = i[163] + i[39] + i[484],
    uo = i[11] + i[1] + i[165],
    _o = i[100] + i[447] + i[46] + i[351] + i[46] + i[126] + i[485],
    lo = i[22] + i[486],
    vo = i[487],
    bo = i[488],
    yo = i[489],
    go = i[490],
    Eo = i[491],
    xo = i[492] + i[493] + i[494],
    po = i[495] + i[83] + i[496],
    To = i[497] + i[195] + i[498],
    mo = i[499] + i[76] + i[200],
    wo = i[384] + i[29] + i[116],
    Oo = i[486],
    Ao = i[131] + i[29] + i[116],
    Io = i[500] + i[195] + i[496] + i[83] + i[181],
    So = i[501],
    Mo = i[479] + i[100] + i[447],
    ko = i[502],
    Co = i[473] + i[22] + i[129] + i[22] + i[435],
    Lo = i[22] + i[122],
    Ro = i[22] + i[123],
    Po = i[380] + i[1] + i[476],
    Do = i[380] + i[61] + i[503],
    No = i[380] + i[15] + i[504] + i[271],
    Bo = i[380] + i[15] + i[504] + i[272],
    Fo = i[475] + i[1] + i[476] + i[61] + i[505] + i[195] + i[484],
    Go = i[473] + i[22] + i[506],
    $o = i[22] + i[265] + i[1] + i[507],
    Yo = i[508] + i[33] + i[293],
    Wo = i[509] + i[83] + i[510],
    Uo = i[511],
    Ho = i[351],
    Vo = i[294] + i[195] + i[484],
    jo = i[512] + i[72] + i[513],
    Xo = i[126],
    Zo = i[479] + i[46] + i[511] + i[46] + i[126] + i[485],
    zo = i[22] + i[78] + i[43] + i[407],
    Ko = i[514] + i[100] + i[447],
    Jo = i[3] + i[43] + i[515] + i[100] + i[516],
    Qo = i[517] + i[22] + i[411] + i[22] + i[518],
    qo = i[517] + i[22] + i[411] + i[22] + i[519],
    tf = i[520],
    nf = i[521],
    ef = i[522],
    sf = i[23] + i[41] + i[523] + i[493] + i[524],
    hf = i[23] + i[79] + i[525] + i[493] + i[524],
    rf = i[518] + i[22] + i[517],
    af = i[526] + i[22] + i[519] + i[22] + i[517],
    of = i[526] + i[22] + i[519] + i[22] + i[517] + i[22] + i[527],
    ff = i[526] + i[22] + i[518] + i[22] + i[517],
    cf = i[528],
    uf = i[529],
    _f = i[530],
    lf = i[531] + i[22] + i[409] + i[22] + i[532],
    df = i[531] + i[22] + i[533] + i[22] + i[532],
    vf = i[531] + i[22] + i[534],
    bf = i[535] + i[83] + i[536],
    yf = i[49] + i[39] + i[537],
    gf = i[29] + i[468] + i[33] + i[538],
    Ef = i[177] + i[22] + i[531] + i[22] + i[411],
    xf = i[3] + i[41] + i[539],
    pf = i[459],
    Tf = i[540] + i[22] + i[541],
    mf = i[540] + i[22] + i[541] + i[22] + i[542],
    wf = i[540] + i[22] + i[541] + i[22] + i[519] + i[22] + i[543],
    Of = i[540] + i[22] + i[541] + i[22] + i[544],
    Af = i[185] + i[368],
    If = i[202] + i[277] + i[545] + i[546],
    Sf = i[194] + i[1] + i[476],
    Mf = i[194] + i[33] + i[547] + i[61] + i[503],
    kf = i[194] + i[33] + i[547] + i[15] + i[504] + i[271],
    Cf = i[194] + i[33] + i[547] + i[15] + i[504] + i[272],
    Lf = i[427] + i[22] + i[411] + i[22] + i[430],
    Rf = i[194] + i[61] + i[548],
    Pf = i[549],
    Df = i[459] + i[1] + i[550],
    Nf = i[459] + i[551] + i[552],
    Bf = i[194] + i[83] + i[181],
    Ff = i[549] + i[33] + i[91],
    Gf = i[66] + i[67] + i[353] + i[68] + i[353] + i[68] + i[353] + i[68] + i[353] + i[69],
    $f = i[462] + i[1] + i[476],
    Yf = i[462] + i[493] + i[524],
    Wf = i[22] + i[462] + i[493] + i[524],
    Uf = i[459] + i[76] + i[553] + i[1] + i[476],
    Hf = i[459] + i[53] + i[371] + i[1] + i[550],
    Vf = i[459] + i[53] + i[371] + i[551] + i[552],
    jf = i[459] + i[53] + i[371],
    Xf = i[459] + i[53] + i[371] + i[15] + i[504],
    Zf = i[49] + i[29] + i[111] + i[100] + i[341] + i[33] + i[554],
    zf = i[49] + i[29] + i[111] + i[100] + i[341] + i[29] + i[468],
    Kf = i[22] + i[555] + i[33] + i[94],
    Jf = i[22] + i[556] + i[29] + i[557] + i[204] + i[224],
    Qf = i[22] + i[556] + i[29] + i[557],
    qf = i[540] + i[22] + i[541] + i[22] + i[558],
    tc = i[559],
    ic = i[560],
    nc = i[561] + i[72] + i[562],
    ec = i[563] + i[72] + i[562],
    sc = i[540] + i[22] + i[541] + i[22] + i[564],
    hc = i[565],
    rc = i[304],
    ac = i[540] + i[22] + i[541] + i[22] + i[566],
    oc = i[567],
    fc = i[67],
    cc = i[568],
    uc = i[569] + i[100] + i[447] + i[53] + i[197],
    _c = i[22] + i[145] + i[570],
    lc = i[571] + i[29] + i[468],
    dc = i[572],
    vc = i[420] + i[41] + i[573],
    bc = i[167] + i[1] + i[476] + i[33] + i[384],
    yc = i[64] + i[405] + i[1] + i[203] + i[61] + i[172] + i[53],
    gc = i[64] + i[574],
    Ec = i[64] + i[575] + i[26] + i[407] + i[61],
    xc = i[64] + i[576] + i[61] + i[577],
    pc = i[64] + i[576] + i[43] + i[578],
    Tc = i[64] + i[579] + i[1] + i[580],
    mc = i[64] + i[581],
    wc = i[64] + i[405] + i[53] + i[203] + i[1] + i[172] + i[76],
    Oc = i[64] + i[582] + i[61] + i[353],
    Ac = i[64] + i[583] + i[584],
    Ic = i[64] + i[405] + i[76] + i[203] + i[585] + i[115],
    Sc = i[64] + i[576] + i[43] + i[586],
    Mc = i[64] + i[587],
    kc = i[64] + i[115] + i[588] + i[407] + i[589],
    Cc = i[64] + i[590],
    Lc = i[64] + i[591] + i[53] + i[580],
    Rc = i[64] + i[592],
    Pc = i[64] + i[405] + i[76] + i[593] + i[43] + i[406],
    Dc = i[64] + i[594] + i[595] + i[115],
    Nc = i[64] + i[596] + i[182],
    Bc = i[64] + i[405] + i[26] + i[203] + i[597] + i[353],
    Fc = i[64] + i[598],
    Gc = i[64] + i[16] + i[199] + i[16] + i[407] + i[16] + i[407],
    $c = i[64] + i[203] + i[43] + i[599],
    Yc = i[64] + i[406] + i[76] + i[406] + i[1] + i[406] + i[61],
    Wc = i[64] + i[600],
    Uc = i[64] + i[601],
    Hc = i[64] + i[203] + i[76] + i[203] + i[26] + i[203] + i[76],
    Vc = i[64] + i[406] + i[1] + i[602],
    jc = i[64] + i[603],
    Xc = i[64] + i[199] + i[53] + i[199] + i[53] + i[199] + i[53],
    Zc = i[64] + i[604],
    zc = i[64] + i[605],
    Kc = i[64] + i[606],
    Jc = i[64] + i[172] + i[26] + i[172] + i[53] + i[172] + i[53],
    Qc = i[64] + i[43] + i[199] + i[43] + i[320] + i[43] + i[406],
    qc = i[64] + i[43] + i[172] + i[43] + i[203] + i[43] + i[320],
    tu = i[64] + i[43] + i[199] + i[43] + i[406] + i[43] + i[278],
    iu = i[64] + i[607],
    nu = i[64] + i[26] + i[172] + i[608],
    eu = i[64] + i[172] + i[609] + i[353] + i[529] + i[353],
    su = i[64] + i[147] + i[172] + i[610],
    hu = i[64] + i[278] + i[588] + i[278] + i[529] + i[611],
    ru = i[64] + i[61] + i[115] + i[612],
    au = i[64] + i[115] + i[26] + i[407] + i[613],
    ou = i[64] + i[614],
    fu = i[64] + i[142] + i[320] + i[142] + i[320] + i[142] + i[203],
    cu = i[615] + i[208],
    uu = i[24] + i[616] + i[61] + i[99] + i[43] + i[617] + i[29] + i[111],
    _u = i[22] + i[78] + i[618],
    lu = i[24] + i[110],
    du = i[24] + i[619] + i[271],
    vu = i[24] + i[619] + i[272],
    bu = i[24] + i[620] + i[33] + i[94],
    yu = i[24] + i[621],
    gu = i[24] + i[378],
    Eu = i[24] + i[620] + i[43] + i[617] + i[29] + i[111],
    xu = i[24] + i[622] + i[29] + i[136],
    pu = i[22] + i[78] + i[43] + i[623] + i[493] + i[524] + i[100] + i[624] + i[76] + i[200],
    Tu = i[24] + i[378] + i[79] + i[625],
    mu = i[22] + i[626] + i[271],
    wu = i[22] + i[626] + i[272],
    Ou = i[24] + i[626] + i[272],
    Au = i[24] + i[626] + i[204] + i[224],
    Iu = i[22] + i[341] + i[627] + i[628],
    Su = i[202] + i[145] + i[629] + i[630],
    Mu = i[3] + i[79] + i[128],
    ku = i[631] + i[493] + i[524],
    Cu = i[632] + i[493] + i[524],
    Lu = i[22] + i[78] + i[43] + i[623] + i[493] + i[524],
    Ru = i[633],
    Pu = i[634],
    Du = i[616] + i[61] + i[99] + i[29] + i[468],
    Nu = i[24] + i[175],
    Bu = i[22] + i[78] + i[43] + i[405],
    Fu = i[22] + i[635] + i[79] + i[636],
    Gu = i[87] + i[53] + i[371],
    $u = i[85] + i[41] + i[637] + i[53] + i[371],
    Yu = i[87] + i[53] + i[371] + i[15] + i[504],
    Wu = i[85] + i[41] + i[637] + i[53] + i[371] + i[15] + i[504],
    Uu = i[638],
    Hu = i[639] + i[1] + i[484] + i[43] + i[141],
    Vu = i[100] + i[640] + i[46] + i[641] + i[46] + i[642] + i[72],
    ju = i[22] + i[78] + i[61] + i[507],
    Xu = i[22] + i[643] + i[644] + i[645],
    Zu = i[22] + i[78] + i[646],
    zu = i[22] + i[78] + i[43] + i[647] + i[100] + i[447],
    Ku = i[31] + i[61] + i[648],
    Ju = i[31] + i[61] + i[649],
    Qu = i[31],
    qu = i[151] + i[1] + i[650] + i[1] + i[484],
    t_ = i[651],
    i_ = i[652],
    n_ = i[653],
    e_ = i[654],
    s_ = i[31] + i[209] + i[655],
    h_ = i[492] + i[100] + i[101],
    r_ = i[656],
    a_ = i[657],
    o_ = i[658],
    f_ = i[659],
    c_ = i[660] + i[361] + i[661],
    u_ = i[660] + i[53] + i[197],
    __ = i[369] + i[83] + i[181],
    l_ = i[662],
    d_ = i[663] + i[1] + i[484],
    v_ = i[664],
    b_ = i[665],
    y_ = i[666],
    g_ = i[662] + i[53] + i[197],
    E_ = i[667],
    x_ = i[499] + i[33] + i[94],
    p_ = i[668] + i[195] + i[334] + i[1] + i[484] + i[33] + i[94],
    T_ = i[669],
    m_ = i[369],
    w_ = i[670],
    O_ = i[209] + i[671] + i[46] + i[672] + i[157] + i[353] + i[124],
    A_ = i[673],
    I_ = i[39] + i[674] + i[46] + i[529] + i[46] + i[673] + i[46] + i[675] + i[72],
    S_ = i[676] + i[76] + i[200],
    M_ = i[677],
    k_ = i[676] + i[33] + i[94],
    C_ = i[678] + i[1] + i[476],
    L_ = i[262],
    R_ = i[679] + i[1] + i[484],
    P_ = i[680],
    D_ = i[681] + i[56] + i[682] + i[485],
    N_ = i[683],
    B_ = i[681] + i[29] + i[684] + i[46] + i[53] + i[685] + i[485],
    F_ = i[681],
    G_ = i[686],
    $_ = i[172] + i[16] + i[406] + i[147] + i[199] + i[687] + i[688] + i[16] + i[320] + i[689] + i[690] + i[142] + i[691] + i[692] + i[593] + i[693] + i[203] + i[142] + i[203] + i[103] + i[694] + i[142] + i[406] + i[142] + i[695] + i[588] + i[696] + i[529] + i[697] + i[698] + i[699] + i[103] + i[406] + i[700] + i[701] + i[147] + i[702] + i[588] + i[703] + i[529] + i[199] + i[142] + i[353] + i[103] + i[704] + i[16] + i[172] + i[705] + i[203] + i[689] + i[407] + i[706] + i[172] + i[142] + i[707] + i[708] + i[406] + i[709] + i[710] + i[529] + i[711] + i[708] + i[407] + i[142] + i[172] + i[142] + i[712] + i[142] + i[713] + i[16] + i[714] + i[715] + i[203] + i[529] + i[172] + i[142] + i[278] + i[716] + i[717] + i[142] + i[718] + i[709] + i[719] + i[720] + i[721],
    Y_ = i[681] + i[41] + i[722] + i[46] + i[185] + i[157],
    W_ = i[723],
    U_ = i[724],
    H_ = i[725],
    V_ = i[639] + i[43] + i[141],
    j_ = i[726] + i[209],
    X_ = i[727],
    Z_ = i[728],
    z_ = i[729],
    K_ = i[234],
    J_ = i[730],
    Q_ = i[731] + i[72] + i[353] + i[72] + i[353] + i[72] + i[405],
    q_ = i[732],
    tl = i[733],
    il = i[615] + i[734] + i[46] + i[108] + i[46] + i[735] + i[320],
    nl = i[22] + i[78] + i[43] + i[211] + i[1] + i[445],
    el = i[736],
    sl = i[737],
    hl = i[738],
    rl = i[739] + i[204] + i[740],
    al = i[731] + i[72] + i[741] + i[72] + i[405],
    ol = i[33] + i[152],
    fl = i[353] + i[96],
    cl = i[742],
    ul = i[743] + i[26] + i[212],
    _l = i[1] + i[445] + i[79] + i[744] + i[1] + i[442] + i[115] + i[53],
    ll = i[462] + i[83] + i[369],
    dl = i[745],
    vl = i[746],
    bl = i[747],
    yl = i[748] + i[41] + i[637],
    gl = i[749] + i[29] + i[750],
    El = i[3] + i[1] + i[751] + i[29] + i[111],
    xl = i[3] + i[43] + i[50] + i[29] + i[111],
    pl = i[3] + i[29] + i[111],
    Tl = i[615] + i[208] + i[1] + i[445],
    ml = i[752],
    wl = i[353] + i[46] + i[353],
    Ol = i[615] + i[208] + i[1] + i[445] + i[29] + i[753],
    Al = i[754] + i[755],
    Il = i[756],
    Sl = i[615] + i[208] + i[493] + i[757],
    Ml = i[22] + i[341] + i[320] + i[758] + i[41] + i[42],
    kl = i[22] + i[759],
    Cl = i[82] + i[29] + i[760],
    Ll = i[22] + i[203] + i[204] + i[761],
    Rl = i[620],
    Pl = i[762],
    Dl = i[759],
    Nl = i[22] + i[277] + i[41] + i[758] + i[343],
    Bl = i[22] + i[78] + i[61] + i[278],
    Fl = i[512] + i[79] + i[763],
    Gl = i[22] + i[78] + i[172] + i[100],
    $l = i[764],
    Yl = i[22] + i[78] + i[61] + i[353],
    Wl = i[202] + i[765] + i[1],
    Ul = i[22] + i[78] + i[766],
    Hl = i[127],
    Vl = i[22] + i[78] + i[61] + i[320],
    jl = i[22] + i[78] + i[61] + i[406],
    Xl = i[22] + i[78] + i[172] + i[361],
    Zl = i[138],
    zl = i[530] + i[100] + i[101],
    Kl = i[475],
    Jl = i[22] + i[78] + i[61] + i[767],
    Ql = i[22] + i[78] + i[43] + i[768],
    ql = i[22] + i[103] + i[199] + i[1] + i[445] + i[33] + i[94] + i[76] + i[200],
    td = i[22] + i[78] + i[61] + i[267] + i[195] + i[769],
    id = i[770] + i[195] + i[769],
    nd = i[202] + i[78] + i[61] + i[771] + i[195] + i[769],
    ed = i[772],
    sd = i[764] + i[67],
    hd = i[22] + i[78] + i[172] + i[323],
    rd = i[773],
    ad = i[3] + i[26] + i[212] + i[61] + i[99] + i[100] + i[103],
    od = i[22] + i[78] + i[774],
    fd = i[775] + i[100] + i[101],
    cd = i[776] + i[83] + i[228],
    ud = i[777] + i[83] + i[778],
    _d = i[779] + i[271],
    ld = i[779] + i[780] + i[504],
    dd = i[779] + i[272],
    vd = i[22] + i[78] + i[172] + i[195],
    bd = i[185] + i[41] + i[781],
    yd = i[782] + i[100] + i[103],
    gd = i[202] + i[277] + i[493],
    Ed = i[22] + i[78] + i[172] + i[15],
    xd = i[22] + i[103] + i[199] + i[61] + i[480] + i[76] + i[200],
    pd = i[495],
    Td = i[108] + i[26] + i[109] + i[79] + i[783],
    md = i[22] + i[78] + i[43] + i[784] + i[1] + i[445],
    wd = i[223] + i[361] + i[785],
    Od = i[3] + i[493] + i[786] + i[61] + i[480],
    Ad = i[22] + i[759] + i[1] + i[787],
    Id = i[167] + i[79] + i[128],
    Sd = i[441] + i[61] + i[480],
    Md = i[22] + i[185] + i[100] + i[788] + i[79] + i[128],
    kd = i[22] + i[78] + i[789],
    Cd = i[790] + i[22] + i[791],
    Ld = i[792] + i[72] + i[308],
    Rd = i[792] + i[72] + i[793],
    Pd = i[790] + i[22] + i[411],
    Dd = i[790] + i[22] + i[794],
    Nd = i[22] + i[277] + i[41],
    Bd = i[22] + i[384] + i[1] + i[445],
    Fd = i[151],
    Gd = i[795],
    $d = i[22] + i[796],
    Yd = i[22] + i[765] + i[797] + i[798],
    Wd = i[151] + i[43] + i[247],
    Ud = i[49] + i[41] + i[799],
    Hd = i[49] + i[61] + i[800] + i[26] + i[801],
    Vd = i[3] + i[26] + i[802] + i[61] + i[800],
    jd = i[782] + i[61] + i[480],
    Xd = i[22] + i[199] + i[615],
    Zd = i[22] + i[278] + i[15],
    zd = i[22] + i[759] + i[1] + i[93],
    Kd = i[22] + i[803] + i[43] + i[804],
    Jd = i[803] + i[43] + i[141] + i[1] + i[805],
    Qd = i[466] + i[83] + i[78],
    qd = i[620] + i[56] + i[806],
    tv = i[22] + i[189] + i[551],
    iv = i[22] + i[807] + i[1] + i[93],
    nv = i[808] + i[72] + i[482],
    ev = i[22] + i[103] + i[33],
    sv = i[202] + i[406] + i[361],
    hv = i[475] + i[33] + i[293],
    rv = i[620] + i[79] + i[809],
    av = i[810],
    ov = i[811] + i[33] + i[812] + i[39] + i[813],
    fv = i[782] + i[1] + i[814],
    cv = i[815],
    uv = i[620] + i[53] + i[197],
    _v = i[22] + i[78] + i[61] + i[199],
    lv = i[22] + i[816] + i[61] + i[800] + i[100] + i[624] + i[76] + i[200],
    dv = i[481] + i[26] + i[802] + i[61] + i[800],
    vv = i[817] + i[195] + i[196],
    bv = i[108] + i[26] + i[109] + i[61] + i[99] + i[53] + i[818] + i[76] + i[819],
    yv = i[202] + i[145] + i[405],
    gv = i[185] + i[43] + i[247],
    Ev = i[0] + i[26] + i[802],
    xv = i[108] + i[26] + i[109] + i[26] + i[802],
    pv = i[3] + i[100] + i[101] + i[61] + i[99] + i[100] + i[103],
    Tv = i[316] + i[205],
    mv = i[105] + i[106] + i[46] + i[820],
    wv = i[82] + i[100] + i[101] + i[61] + i[821],
    Ov = i[759] + i[61] + i[480],
    Av = i[822],
    Iv = i[22] + i[78] + i[43] + i[784] + i[195],
    Sv = i[22] + i[464] + i[61] + i[480],
    Mv = i[22] + i[823] + i[39] + i[824],
    kv = i[22] + i[78] + i[825],
    Cv = i[826] + i[22] + i[411] + i[22] + i[446],
    Lv = i[24] + i[680],
    Rv = i[49] + i[100] + i[640],
    Pv = i[49] + i[53] + i[827] + i[15] + i[16],
    Dv = i[6] + i[1] + i[828],
    Nv = i[198],
    Bv = i[82] + i[1] + i[165] + i[100] + i[101],
    Fv = i[82] + i[33] + i[91],
    Gv = i[108] + i[26] + i[109] + i[1] + i[165],
    $v = i[782],
    Yv = i[22] + i[78] + i[829],
    Wv = i[830] + i[316] + i[761],
    Uv = i[11] + i[316],
    Hv = i[615] + i[72] + i[26] + i[212],
    Vv = i[831],
    jv = i[832] + i[493] + i[833],
    Xv = i[24] + i[151],
    Zv = i[615] + i[72] + i[26] + i[802],
    zv = i[22] + i[78] + i[834],
    Kv = i[835],
    Jv = i[836] + i[26] + i[801],
    Qv = i[0] + i[29] + i[468] + i[33] + i[546],
    qv = i[795] + i[72] + i[837],
    tb = i[838] + i[29] + i[468] + i[1] + i[192],
    ib = i[11] + i[29] + i[468] + i[33] + i[538],
    nb = i[185],
    eb = i[839],
    sb = i[816] + i[83] + i[181],
    hb = i[24] + i[511],
    rb = i[615] + i[208] + i[840],
    ab = i[24] + i[728],
    ob = i[816],
    fb = i[0] + i[41] + i[841],
    cb = i[25] + i[29] + i[760] + i[1] + i[93],
    ub = i[22] + i[78] + i[842],
    _b = i[635],
    lb = i[0] + i[76] + i[843],
    db = i[185] + i[76] + i[843],
    vb = i[22] + i[635],
    bb = i[615] + i[72] + i[39] + i[484],
    yb = i[844] + i[72] + i[167],
    gb = i[844] + i[72] + i[11],
    Eb = i[622] + i[29] + i[136],
    xb = i[845] + i[22] + i[846],
    pb = i[434] + i[22] + i[532],
    Tb = i[615] + i[72] + i[33] + i[628] + i[39] + i[484],
    mb = i[847] + i[83] + i[78],
    wb = i[421] + i[83] + i[78],
    Ob = i[848],
    Ab = i[33] + i[628] + i[39] + i[484],
    Ib = i[631],
    Sb = i[3] + i[33] + i[628],
    Mb = i[849] + i[41] + i[850],
    kb = i[514],
    Cb = i[851] + i[22] + i[852],
    Lb = i[851] + i[22] + i[853],
    Rb = i[851] + i[22] + i[854],
    Pb = i[851] + i[22] + i[855],
    Db = i[851] + i[22] + i[856],
    Nb = i[851] + i[22] + i[857],
    Bb = i[851] + i[22] + i[858],
    Fb = i[851] + i[22] + i[859],
    Gb = i[851] + i[22] + i[860],
    $b = i[851] + i[22] + i[861],
    Yb = i[851] + i[22] + i[434] + i[22] + i[862],
    Wb = i[851] + i[22] + i[434] + i[22] + i[115],
    Ub = i[851] + i[22] + i[434] + i[22] + i[278],
    Hb = i[851] + i[22] + i[434] + i[22] + i[406],
    Vb = i[851] + i[22] + i[434] + i[22] + i[320],
    jb = i[851] + i[22] + i[434] + i[22] + i[199],
    Xb = i[851] + i[22] + i[434] + i[22] + i[863],
    Zb = i[615] + i[72] + i[61] + i[864],
    zb = i[749] + i[33] + i[812] + i[39] + i[813],
    Kb = i[865] + i[22] + i[411],
    Jb = i[865] + i[22] + i[411] + i[22] + i[866],
    Qb = i[865] + i[22] + i[867] + i[22] + i[435],
    qb = i[620] + i[76] + i[200],
    ty = i[868],
    iy = i[24] + i[869] + i[33] + i[94],
    ny = i[615] + i[72] + i[493] + i[833],
    ey = i[22] + i[78] + i[172] + i[79],
    sy = i[869] + i[33] + i[94],
    hy = i[868] + i[83] + i[181],
    ry = i[621],
    ay = i[868] + i[100] + i[447],
    oy = i[615] + i[72] + i[83] + i[369],
    fy = i[83] + i[369],
    cy = i[481] + i[76] + i[870],
    uy = i[24] + i[620],
    _y = i[24] + i[871],
    ly = i[872] + i[635] + i[79] + i[636],
    dy = i[64] + i[873],
    vy = i[24] + i[622] + i[29] + i[111],
    by = i[194] + i[61] + i[623] + i[1] + i[476],
    yy = i[874] + i[33] + i[363],
    gy = i[874] + i[33] + i[363] + i[33] + i[875],
    Ey = i[24] + i[876],
    xy = i[619] + i[272],
    py = i[619] + i[271],
    Ty = i[427] + i[22] + i[411] + i[22] + i[430] + i[22] + i[866],
    my = i[22] + i[877],
    wy = i[378] + i[41] + i[637] + i[53] + i[371],
    Oy = i[378] + i[41] + i[637] + i[53] + i[371] + i[15] + i[504],
    Ay = i[24] + i[632] + i[1] + i[476],
    Iy = i[24] + i[620] + i[53] + i[197],
    Sy = i[24] + i[632] + i[493] + i[524],
    My = i[481] + i[33] + i[94],
    ky = i[25] + i[61] + i[480] + i[1] + i[93],
    Cy = i[24] + i[620] + i[41] + i[539],
    Ly = i[24] + i[620] + i[79] + i[636],
    Ry = i[24] + i[620] + i[56] + i[806],
    Py = i[24] + i[773],
    Dy = i[878],
    Ny = i[879] + i[56] + i[880],
    By = i[879] + i[361] + i[881] + i[83] + i[510],
    Fy = i[619],
    Gy = i[25] + i[53] + i[197] + i[1] + i[93],
    $y = i[41] + i[539],
    Yy = i[56] + i[806],
    Wy = i[43] + i[617] + i[29] + i[111],
    Uy = i[430] + i[22] + i[882],
    Hy = i[61] + i[623] + i[493] + i[524],
    Vy = i[427] + i[22] + i[428] + i[22] + i[883],
    jy = i[79] + i[636],
    Xy = i[53] + i[197],
    Zy = i[826] + i[22] + i[411] + i[22] + i[884],
    zy = i[826] + i[22] + i[411] + i[22] + i[885],
    Ky = i[3] + i[29] + i[30],
    Jy = i[830] + i[29] + i[30],
    Qy = i[886],
    qy = i[817],
    tg = i[160],
    ig = i[194] + i[72] + i[561],
    ng = i[194] + i[72] + i[378],
    eg = i[194] + i[72] + i[158],
    sg = i[475] + i[72] + i[561],
    hg = i[876],
    rg = i[380] + i[72] + i[887],
    ag = i[380] + i[72] + i[561],
    og = i[380] + i[72] + i[619] + i[72] + i[124],
    fg = i[380] + i[72] + i[619] + i[72] + i[99],
    cg = i[888] + i[72] + i[460],
    ug = i[888] + i[72] + i[460] + i[72] + i[214],
    _g = i[888] + i[72] + i[459] + i[72] + i[889],
    lg = i[888] + i[72] + i[462] + i[72] + i[561],
    dg = i[888] + i[72] + i[462] + i[72] + i[890],
    vg = i[888] + i[72] + i[549],
    bg = i[888] + i[72] + i[549] + i[72] + i[214],
    yg = i[616] + i[72] + i[891] + i[72] + i[795],
    gg = i[632] + i[72] + i[561],
    Eg = i[632] + i[72] + i[890],
    xg = i[378] + i[72] + i[122],
    pg = i[378] + i[72] + i[561],
    Tg = i[378] + i[72] + i[459] + i[72] + i[889],
    mg = i[378] + i[72] + i[153],
    wg = i[459] + i[72] + i[892],
    Og = i[459] + i[72] + i[893],
    Ag = i[459] + i[72] + i[889] + i[72] + i[892],
    Ig = i[459] + i[72] + i[889] + i[72] + i[893],
    Sg = i[511] + i[72] + i[378] + i[72] + i[122],
    Mg = i[473] + i[22] + i[430] + i[22] + i[446],
    kg = i[473] + i[22] + i[430] + i[22] + i[431],
    Cg = i[511] + i[72] + i[378] + i[72] + i[214],
    Lg = i[473] + i[22] + i[430] + i[22] + i[409] + i[22] + i[894],
    Rg = i[473] + i[22] + i[430] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    Pg = i[473] + i[22] + i[882],
    Dg = i[473] + i[22] + i[430] + i[22] + i[882],
    Ng = i[511] + i[72] + i[153],
    Bg = i[511] + i[72] + i[621],
    Fg = i[511] + i[72] + i[530] + i[72] + i[14],
    Gg = i[511] + i[72] + i[896],
    $g = i[511] + i[72] + i[876],
    Yg = i[897] + i[22] + i[898],
    Wg = i[651] + i[72] + i[110],
    Ug = i[897] + i[22] + i[899],
    Hg = i[651] + i[72] + i[634],
    Vg = i[897] + i[22] + i[900],
    jg = i[651] + i[72] + i[773],
    Xg = i[651] + i[72] + i[561],
    Zg = i[897] + i[22] + i[97] + i[22] + i[435],
    zg = i[651] + i[72] + i[90] + i[72] + i[762],
    Kg = i[897] + i[22] + i[97] + i[22] + i[98],
    Jg = i[651] + i[72] + i[90] + i[72] + i[901],
    Qg = i[897] + i[22] + i[97] + i[22] + i[446],
    qg = i[651] + i[72] + i[90] + i[72] + i[214],
    tE = i[897] + i[22] + i[902],
    iE = i[651] + i[72] + i[621],
    nE = i[897] + i[22] + i[432] + i[22] + i[433],
    eE = i[651] + i[72] + i[626] + i[72] + i[122],
    sE = i[897] + i[22] + i[432],
    hE = i[651] + i[72] + i[626],
    rE = i[651] + i[72] + i[153],
    aE = i[897] + i[22] + i[895] + i[22] + i[271],
    oE = i[651] + i[72] + i[619] + i[72] + i[124],
    fE = i[897] + i[22] + i[895] + i[22] + i[272],
    cE = i[651] + i[72] + i[619] + i[72] + i[99],
    uE = i[897] + i[22] + i[435],
    _E = i[651] + i[72] + i[762],
    lE = i[897] + i[22] + i[903] + i[22] + i[899],
    dE = i[651] + i[72] + i[904] + i[72] + i[634],
    vE = i[651] + i[72] + i[378],
    bE = i[897] + i[22] + i[430] + i[22] + i[409] + i[22] + i[894],
    yE = i[897] + i[22] + i[430] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    gE = i[897] + i[22] + i[430] + i[22] + i[446],
    EE = i[651] + i[72] + i[378] + i[72] + i[214],
    xE = i[897] + i[22] + i[905] + i[22] + i[431],
    pE = i[897] + i[22] + i[905] + i[22] + i[517],
    TE = i[897] + i[22] + i[906],
    mE = i[651] + i[72] + i[871],
    wE = i[651] + i[72] + i[380] + i[72] + i[887],
    OE = i[897] + i[22] + i[428] + i[22] + i[431],
    AE = i[651] + i[72] + i[380] + i[72] + i[561],
    IE = i[897] + i[22] + i[428] + i[22] + i[895] + i[22] + i[271],
    SE = i[897] + i[22] + i[428] + i[22] + i[895] + i[22] + i[272],
    ME = i[897] + i[22] + i[644] + i[22] + i[179],
    kE = i[651] + i[72] + i[530] + i[72] + i[14],
    CE = i[897] + i[22] + i[907] + i[22] + i[144],
    LE = i[651] + i[72] + i[25] + i[72] + i[384],
    RE = i[865] + i[22] + i[905] + i[22] + i[517],
    PE = i[868] + i[72] + i[153],
    DE = i[865] + i[22] + i[908],
    NE = i[868] + i[72] + i[460],
    BE = i[865] + i[22] + i[908] + i[22] + i[446],
    FE = i[868] + i[72] + i[460] + i[72] + i[561],
    GE = i[865] + i[22] + i[908] + i[22] + i[409] + i[22] + i[894],
    $E = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[909] + i[22] + i[899],
    YE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[431],
    WE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[97] + i[22] + i[435],
    UE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[97] + i[22] + i[446],
    HE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[432] + i[22] + i[433],
    VE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[882],
    jE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[895] + i[22] + i[271],
    XE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[895] + i[22] + i[272],
    ZE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[430],
    zE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[430] + i[22] + i[446],
    KE = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[905] + i[22] + i[517],
    JE = i[422] + i[22] + i[433],
    QE = i[816] + i[72] + i[122],
    qE = i[422] + i[22] + i[431],
    tx = i[816] + i[72] + i[561],
    ix = i[816] + i[72] + i[549],
    nx = i[422] + i[22] + i[910] + i[22] + i[446],
    ex = i[816] + i[72] + i[549] + i[72] + i[214],
    sx = i[816] + i[72] + i[459] + i[72] + i[889],
    hx = i[422] + i[22] + i[911] + i[22] + i[895],
    rx = i[816] + i[72] + i[151] + i[72] + i[619],
    ax = i[816] + i[72] + i[185] + i[72] + i[619],
    ox = i[816] + i[72] + i[462] + i[72] + i[561],
    fx = i[422] + i[22] + i[423] + i[22] + i[411],
    cx = i[816] + i[72] + i[836] + i[72] + i[158],
    ux = i[422] + i[22] + i[423] + i[22] + i[912],
    _x = i[816] + i[72] + i[836] + i[72] + i[913],
    lx = i[422] + i[22] + i[914] + i[22] + i[915],
    dx = i[816] + i[72] + i[916] + i[72] + i[917],
    vx = i[422] + i[22] + i[918],
    bx = i[816] + i[72] + i[383],
    yx = i[422] + i[22] + i[919] + i[22] + i[920],
    gx = i[816] + i[72] + i[921] + i[72] + i[922],
    Ex = i[422] + i[22] + i[923] + i[22] + i[829] + i[22] + i[924],
    xx = i[422] + i[22] + i[923] + i[22] + i[924],
    px = i[816] + i[72] + i[45] + i[72] + i[925],
    Tx = i[422] + i[22] + i[923] + i[22] + i[130],
    mx = i[816] + i[72] + i[45] + i[72] + i[162],
    wx = i[422] + i[22] + i[926],
    Ox = i[816] + i[72] + i[927],
    Ax = i[422] + i[22] + i[926] + i[22] + i[882],
    Ix = i[816] + i[72] + i[927] + i[72] + i[153],
    Sx = i[422] + i[22] + i[911] + i[22] + i[928] + i[22] + i[422],
    Mx = i[816] + i[72] + i[151] + i[72] + i[929] + i[72] + i[816],
    kx = i[422] + i[22] + i[532] + i[22] + i[928] + i[22] + i[422],
    Cx = i[816] + i[72] + i[185] + i[72] + i[929] + i[72] + i[816],
    Lx = i[816] + i[72] + i[151] + i[72] + i[930],
    Rx = i[816] + i[72] + i[185] + i[72] + i[930],
    Px = i[434] + i[22] + i[911],
    Dx = i[403] + i[72] + i[151],
    Nx = i[403] + i[72] + i[151] + i[72] + i[762],
    Bx = i[403] + i[72] + i[151] + i[72] + i[619],
    Fx = i[403] + i[72] + i[151] + i[72] + i[460],
    Gx = i[434] + i[22] + i[911] + i[22] + i[908] + i[22] + i[446],
    $x = i[434] + i[22] + i[911] + i[22] + i[910],
    Yx = i[403] + i[72] + i[151] + i[72] + i[549],
    Wx = i[434] + i[22] + i[911] + i[22] + i[910] + i[22] + i[446],
    Ux = i[434] + i[22] + i[911] + i[22] + i[409] + i[22] + i[894],
    Hx = i[403] + i[72] + i[151] + i[72] + i[459] + i[72] + i[889],
    Vx = i[434] + i[22] + i[911] + i[22] + i[931] + i[22] + i[431],
    jx = i[434] + i[22] + i[911] + i[22] + i[409] + i[22] + i[410],
    Xx = i[403] + i[72] + i[151] + i[72] + i[459] + i[72] + i[892],
    Zx = i[403] + i[72] + i[151] + i[72] + i[459] + i[72] + i[893],
    zx = i[403] + i[72] + i[185],
    Kx = i[434] + i[22] + i[532] + i[22] + i[435],
    Jx = i[403] + i[72] + i[185] + i[72] + i[762],
    Qx = i[434] + i[22] + i[532] + i[22] + i[895],
    qx = i[403] + i[72] + i[185] + i[72] + i[619],
    tp = i[403] + i[72] + i[185] + i[72] + i[460],
    ip = i[434] + i[22] + i[532] + i[22] + i[908] + i[22] + i[446],
    np = i[403] + i[72] + i[185] + i[72] + i[549],
    ep = i[434] + i[22] + i[532] + i[22] + i[910] + i[22] + i[446],
    sp = i[434] + i[22] + i[532] + i[22] + i[409] + i[22] + i[894],
    hp = i[403] + i[72] + i[185] + i[72] + i[459] + i[72] + i[889],
    rp = i[434] + i[22] + i[532] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    ap = i[434] + i[22] + i[532] + i[22] + i[931] + i[22] + i[431],
    op = i[403] + i[72] + i[185] + i[72] + i[462] + i[72] + i[561],
    fp = i[434] + i[22] + i[532] + i[22] + i[931] + i[22] + i[517],
    cp = i[434] + i[22] + i[532] + i[22] + i[409] + i[22] + i[410],
    up = i[403] + i[72] + i[185] + i[72] + i[459] + i[72] + i[892],
    _p = i[403] + i[72] + i[185] + i[72] + i[459] + i[72] + i[893],
    lp = i[427] + i[22] + i[428] + i[22] + i[895] + i[22] + i[271],
    dp = i[897] + i[22] + i[932] + i[22] + i[933],
    vp = i[464] + i[53] + i[934],
    bp = i[561],
    yp = i[90] + i[33] + i[94],
    gp = i[897] + i[22] + i[430],
    Ep = i[378] + i[1] + i[476],
    xp = i[632] + i[1] + i[476],
    pp = i[935] + i[15] + i[341] + i[83] + i[936],
    Tp = i[428] + i[22] + i[895] + i[22] + i[271],
    mp = i[428] + i[22] + i[895] + i[22] + i[272],
    wp = i[90] + i[76] + i[95],
    Op = i[90] + i[33] + i[91],
    Ap = i[904] + i[29] + i[136],
    Ip = i[626] + i[204] + i[224],
    Sp = i[935] + i[29] + i[630],
    Mp = i[378] + i[79] + i[625],
    kp = i[871],
    Cp = i[897] + i[22] + i[428] + i[22] + i[883],
    Lp = i[937],
    Rp = i[22] + i[115] + i[209],
    Pp = i[905] + i[22] + i[431],
    Dp = i[905] + i[22] + i[517],
    Np = i[902],
    Bp = i[430],
    Fp = i[430] + i[22] + i[431],
    Gp = i[430] + i[22] + i[409] + i[22] + i[894],
    $p = i[22] + i[103] + i[278],
    Yp = i[851] + i[22] + i[908] + i[22] + i[446],
    Wp = i[851] + i[22] + i[931] + i[22] + i[431],
    Up = i[473] + i[22] + i[938],
    Hp = i[896] + i[83] + i[181],
    Vp = i[851] + i[22] + i[910],
    jp = i[851] + i[22] + i[910] + i[22] + i[446],
    Xp = i[851] + i[22] + i[931] + i[22] + i[517],
    Zp = i[851] + i[22] + i[409] + i[22] + i[894],
    zp = i[851] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    Kp = i[409] + i[22] + i[410],
    Jp = i[409] + i[22] + i[417],
    Qp = i[473] + i[22] + i[905] + i[22] + i[431],
    qp = i[473] + i[22] + i[902],
    tT = i[473] + i[22] + i[937],
    iT = i[939] + i[61] + i[940],
    nT = i[22] + i[320] + i[272],
    eT = i[865] + i[22] + i[905] + i[22] + i[431],
    sT = i[888],
    hT = i[865] + i[22] + i[908] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    rT = i[865] + i[22] + i[882],
    aT = i[22] + i[406] + i[361],
    oT = i[151] + i[43] + i[941],
    fT = i[185] + i[43] + i[941],
    cT = i[409] + i[22] + i[894] + i[22] + i[410],
    uT = i[151] + i[43] + i[141] + i[26] + i[802],
    _T = i[185] + i[43] + i[141] + i[26] + i[802],
    lT = i[422] + i[22] + i[910],
    dT = i[422] + i[22] + i[409] + i[22] + i[894],
    vT = i[422] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    bT = i[422] + i[22] + i[532] + i[22] + i[895],
    yT = i[422] + i[22] + i[911] + i[22] + i[942],
    gT = i[434] + i[22] + i[911] + i[22] + i[435],
    ET = i[151] + i[43] + i[941] + i[33] + i[94],
    xT = i[434] + i[22] + i[911] + i[22] + i[895],
    pT = i[151] + i[43] + i[941] + i[15] + i[504],
    TT = i[434] + i[22] + i[911] + i[22] + i[908],
    mT = i[151] + i[43] + i[941] + i[33] + i[554],
    wT = i[151] + i[43] + i[941] + i[33] + i[554] + i[33] + i[91],
    OT = i[151] + i[43] + i[941] + i[15] + i[943],
    AT = i[151] + i[43] + i[941] + i[76] + i[553] + i[1] + i[476],
    IT = i[434] + i[22] + i[911] + i[22] + i[931] + i[22] + i[517],
    ST = i[151] + i[43] + i[941] + i[41] + i[637] + i[53] + i[371],
    MT = i[434] + i[22] + i[911] + i[22] + i[409] + i[22] + i[417],
    kT = i[151] + i[43] + i[941] + i[41] + i[637] + i[551] + i[552],
    CT = i[151] + i[43] + i[941] + i[41] + i[637] + i[1] + i[550],
    LT = i[185] + i[43] + i[941] + i[33] + i[94],
    RT = i[185] + i[43] + i[941] + i[15] + i[504],
    PT = i[185] + i[43] + i[941] + i[33] + i[554],
    DT = i[185] + i[43] + i[941] + i[33] + i[554] + i[33] + i[91],
    NT = i[434] + i[22] + i[532] + i[22] + i[910],
    BT = i[185] + i[43] + i[941] + i[15] + i[943],
    FT = i[185] + i[43] + i[941] + i[15] + i[943] + i[33] + i[91],
    GT = i[185] + i[43] + i[941] + i[76] + i[553] + i[1] + i[476],
    $T = i[185] + i[43] + i[941] + i[76] + i[553] + i[493] + i[524],
    YT = i[185] + i[43] + i[941] + i[41] + i[637] + i[53] + i[371],
    WT = i[185] + i[43] + i[941] + i[41] + i[637] + i[551] + i[552],
    UT = i[185] + i[43] + i[941] + i[41] + i[637] + i[1] + i[550],
    HT = i[836] + i[41] + i[944],
    VT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[899],
    jT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[906],
    XT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[898],
    ZT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[97] + i[22] + i[98],
    zT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[902],
    KT = i[422] + i[22] + i[423] + i[22] + i[897] + i[22] + i[905] + i[22] + i[431],
    JT = i[430] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    QT = i[620] + i[33] + i[628],
    qT = i[851] + i[22] + i[908],
    tm = i[409] + i[22] + i[894] + i[22] + i[417],
    im = i[851] + i[22] + i[409] + i[22] + i[931] + i[22] + i[431],
    nm = i[945] + i[22] + i[829] + i[22] + i[946],
    em = i[473] + i[22] + i[430],
    sm = i[434] + i[22] + i[911] + i[22] + i[409] + i[22] + i[894] + i[22] + i[895],
    hm = i[434] + i[22] + i[532] + i[22] + i[908],
    rm = i[434] + i[22] + i[532] + i[22] + i[409] + i[22] + i[417],
    am = i[22] + i[78] + i[947],
    om = i[620] + i[1] + i[2] + i[100] + i[101],
    fm = i[620] + i[33] + i[94],
    cm = i[24] + i[620] + i[1] + i[165],
    um = i[3] + i[33] + i[91],
    _m = i[25] + i[61] + i[948] + i[29] + i[30] + i[1] + i[192],
    lm = i[949] + i[41] + i[944],
    dm = i[949] + i[61] + i[948] + i[29] + i[71],
    vm = i[830] + i[29] + i[71],
    bm = i[167] + i[61] + i[948],
    ym = i[481] + i[1] + i[2],
    gm = i[950],
    Em = i[24] + i[194] + i[61] + i[548],
    xm = i[24] + i[194] + i[33] + i[547] + i[15] + i[504] + i[271],
    pm = i[24] + i[194] + i[33] + i[547] + i[15] + i[504] + i[272],
    Tm = i[24] + i[380] + i[61] + i[503],
    mm = i[24] + i[194] + i[33] + i[547] + i[61] + i[503],
    wm = i[24] + i[620] + i[61] + i[480],
    Om = i[22] + i[78] + i[43] + i[940],
    Am = i[489] + i[1] + i[93],
    Im = i[24] + i[475] + i[1] + i[476],
    Sm = i[24] + i[475] + i[1] + i[476] + i[61] + i[505] + i[195] + i[484],
    Mm = i[24] + i[380] + i[1] + i[476],
    km = i[24] + i[380] + i[15] + i[504] + i[271],
    Cm = i[24] + i[380] + i[15] + i[504] + i[272],
    Lm = i[509] + i[83] + i[510] + i[1] + i[2],
    Rm = i[316] + i[22] + i[951] + i[22] + i[952],
    Pm = i[64] + i[953],
    Dm = i[24] + i[762],
    Nm = i[24] + i[620] + i[33] + i[293],
    Bm = i[82] + i[195] + i[954] + i[61] + i[480],
    Fm = i[22] + i[556] + i[61] + i[480],
    Gm = i[24] + i[620] + i[76] + i[553] + i[493] + i[524],
    $m = i[24] + i[896] + i[83] + i[181],
    Ym = i[24] + i[459] + i[204] + i[224],
    Wm = i[33] + i[293],
    Um = i[76] + i[553] + i[493] + i[524],
    Hm = i[903] + i[22] + i[899],
    Vm = i[897] + i[22] + i[431],
    jm = i[90],
    Xm = i[950] + i[83] + i[369],
    Zm = i[24] + i[90] + i[76] + i[95],
    zm = i[24] + i[90] + i[33] + i[91],
    Km = i[24] + i[90],
    Jm = i[231] + i[43] + i[955],
    Qm = i[956],
    qm = i[76] + i[957],
    tw = i[24] + i[620] + i[76] + i[957],
    iw = i[24] + i[620] + i[76] + i[958] + i[43] + i[941],
    nw = i[24] + i[620] + i[83] + i[78] + i[43] + i[941],
    ew = i[24] + i[549],
    sw = i[795] + i[61] + i[480],
    hw = i[481] + i[76] + i[958] + i[43] + i[941],
    rw = i[481] + i[83] + i[78] + i[43] + i[941],
    aw = i[24] + i[151] + i[43] + i[941] + i[15] + i[504],
    ow = i[151] + i[43] + i[941] + i[41] + i[539],
    fw = i[24] + i[151] + i[43] + i[941] + i[33] + i[628],
    cw = i[24] + i[151] + i[43] + i[941] + i[33] + i[94],
    uw = i[151] + i[43] + i[941] + i[33] + i[875],
    _w = i[151] + i[43] + i[941] + i[76] + i[553] + i[493] + i[524],
    lw = i[493] + i[524],
    dw = i[24] + i[185] + i[43] + i[941],
    vw = i[24] + i[185] + i[43] + i[941] + i[15] + i[504],
    bw = i[185] + i[43] + i[941] + i[41] + i[539],
    yw = i[24] + i[185] + i[43] + i[941] + i[33] + i[94],
    gw = i[24] + i[185] + i[43] + i[941] + i[33] + i[628],
    Ew = i[185] + i[43] + i[941] + i[33] + i[875],
    xw = i[43] + i[941] + i[33] + i[554],
    pw = i[43] + i[941] + i[33] + i[554] + i[33] + i[91],
    Tw = i[43] + i[941] + i[33] + i[875],
    mw = i[43] + i[941] + i[41] + i[637] + i[53] + i[371],
    ww = i[43] + i[941] + i[41] + i[637] + i[53] + i[371] + i[15] + i[504],
    Ow = i[43] + i[941] + i[76] + i[553] + i[1] + i[476],
    Aw = i[43] + i[941] + i[76] + i[553] + i[493] + i[524],
    Iw = i[43] + i[941] + i[41] + i[637] + i[1] + i[550],
    Sw = i[43] + i[941] + i[41] + i[637] + i[551] + i[552],
    Mw = i[43] + i[941] + i[15] + i[943],
    kw = i[43] + i[941] + i[15] + i[943] + i[33] + i[91],
    Cw = i[24] + i[151] + i[43] + i[941],
    Lw = i[24] + i[462] + i[493] + i[524],
    Rw = i[479] + i[43] + i[941],
    Pw = i[24] + i[462] + i[1] + i[476],
    Dw = i[76] + i[958] + i[43] + i[941],
    Nw = i[83] + i[78] + i[43] + i[941],
    Bw = i[167] + i[1] + i[165],
    Fw = i[3] + i[26] + i[959] + i[29] + i[111] + i[61] + i[480],
    Gw = i[479] + i[41] + i[799] + i[26] + i[802],
    $w = i[3] + i[29] + i[960] + i[29] + i[111],
    Yw = i[422] + i[22] + i[532] + i[22] + i[942],
    Ww = i[748] + i[271],
    Uw = i[22] + i[961] + i[83] + i[536] + i[29] + i[111],
    Hw = i[3] + i[41] + i[962] + i[61] + i[480],
    Vw = i[479] + i[26] + i[802],
    jw = i[422] + i[22] + i[411] + i[22] + i[963],
    Xw = i[422] + i[22] + i[411] + i[22] + i[426] + i[22] + i[964],
    Zw = i[422] + i[22] + i[411] + i[22] + i[965] + i[22] + i[964],
    zw = i[422] + i[22] + i[411] + i[22] + i[918] + i[22] + i[143],
    Kw = i[422] + i[22] + i[411] + i[22] + i[918] + i[22] + i[150],
    Jw = i[422] + i[22] + i[411] + i[22] + i[965] + i[22] + i[527],
    Qw = i[422] + i[22] + i[411] + i[22] + i[527] + i[22] + i[964],
    qw = i[422] + i[22] + i[411] + i[22] + i[918] + i[22] + i[144],
    tO = i[422] + i[22] + i[411] + i[22] + i[426] + i[22] + i[527],
    iO = i[966],
    nO = i[422] + i[22] + i[411] + i[22] + i[964] + i[22] + i[527],
    eO = i[422] + i[22] + i[411] + i[22] + i[918] + i[22] + i[146],
    sO = i[967] + i[22] + i[968],
    hO = i[969] + i[22] + i[968],
    rO = i[422] + i[22] + i[411] + i[22] + i[426],
    aO = i[422] + i[22] + i[926] + i[22] + i[970],
    oO = i[422] + i[22] + i[926] + i[22] + i[418],
    fO = i[422] + i[22] + i[926] + i[22] + i[414],
    cO = i[24] + i[836] + i[26] + i[801],
    uO = i[971] + i[61] + i[972],
    _O = i[3] + i[780] + i[504],
    lO = i[49] + i[29] + i[973] + i[15] + i[974],
    dO = i[3] + i[61] + i[800] + i[41] + i[944],
    vO = i[975],
    bO = i[481] + i[29] + i[276],
    yO = i[939] + i[61] + i[800] + i[41] + i[944],
    gO = i[479] + i[79] + i[976] + i[41] + i[637],
    EO = i[422] + i[22] + i[411] + i[22] + i[965],
    xO = i[383] + i[72],
    pO = i[167] + i[33] + i[538] + i[83] + i[181],
    TO = i[795] + i[33] + i[546],
    mO = i[929] + i[26] + i[959],
    wO = i[22] + i[78] + i[977],
    OO = i[978] + i[29] + i[979],
    AO = i[489] + i[61] + i[480],
    IO = i[556],
    SO = i[110] + i[271],
    MO = i[110] + i[272],
    kO = i[3] + i[53] + i[54] + i[29] + i[960] + i[29] + i[111],
    CO = i[3] + i[41] + i[962] + i[29] + i[979],
    LO = i[980] + i[22] + i[422] + i[22] + i[981] + i[22] + i[429],
    RO = i[748] + i[272],
    PO = i[982],
    DO = i[897] + i[22] + i[909] + i[22] + i[899],
    NO = i[897] + i[22] + i[882],
    BO = i[64] + i[983],
    FO = i[64] + i[984] + i[985] + i[320],
    GO = i[64] + i[986] + i[26] + i[353],
    $O = i[987] + i[22] + i[431] + i[22] + i[540] + i[22] + i[541],
    YO = i[988],
    WO = i[989] + i[56] + i[990],
    UO = i[991],
    HO = i[992],
    VO = i[231],
    jO = i[464] + i[83] + i[78] + i[41] + i[993],
    XO = i[994] + i[43] + i[995],
    ZO = i[39] + i[484],
    zO = i[23] + i[33] + i[628] + i[39] + i[484],
    KO = i[493] + i[833],
    JO = i[23] + i[493] + i[833],
    QO = i[22] + i[139] + i[996] + i[196],
    qO = i[22] + i[78] + i[61] + i[172],
    tA = i[997],
    iA = i[223] + i[29] + i[71],
    nA = i[235],
    eA = i[998] + i[22] + i[999],
    sA = i[25] + i[100] + i[1e3] + i[26] + i[27],
    hA = i[1001],
    rA = i[939] + i[41] + i[1002] + i[61] + i[480],
    aA = i[1003],
    oA = i[1004],
    fA = i[1005],
    cA = i[978],
    uA = i[971] + i[41] + i[1006] + i[83] + i[78],
    _A = i[1007] + i[29] + i[111] + i[26] + i[1008],
    lA = i[167] + i[26] + i[212],
    dA = i[3] + i[53] + i[54] + i[33] + i[91],
    vA = i[1009] + i[61] + i[480],
    bA = i[58] + i[43] + i[75],
    yA = i[22] + i[78] + i[61] + i[1010] + i[61] + i[480],
    gA = i[4] + i[41] + i[1011],
    EA = i[333] + i[43] + i[141],
    xA = i[333] + i[100] + i[341],
    pA = i[333] + i[15] + i[340],
    TA = i[869] + i[33] + i[293],
    mA = i[49] + i[100] + i[624],
    wA = i[338] + i[83] + i[78] + i[1] + i[805],
    OA = i[289] + i[83] + i[78],
    AA = i[333] + i[43] + i[75],
    IA = i[1012] + i[22] + i[1013],
    SA = i[294] + i[33] + i[344],
    MA = i[22] + i[1014] + i[43] + i[75],
    kA = i[1015] + i[271],
    CA = i[779] + i[1016] + i[504],
    LA = i[441] + i[29] + i[753],
    RA = i[185] + i[53] + i[197] + i[364],
    PA = i[511] + i[232] + i[1017],
    DA = i[1018],
    NA = i[776] + i[33] + i[1019],
    BA = i[82] + i[41] + i[539],
    FA = i[49] + i[195] + i[1020],
    GA = i[167] + i[1] + i[1021] + i[100] + i[1e3],
    $A = i[11] + i[1] + i[1021] + i[100] + i[1e3],
    YA = i[22] + i[1022],
    WA = i[11] + i[26] + i[27] + i[41] + i[173],
    UA = i[1023],
    HA = i[1024] + i[735],
    VA = i[53] + i[1025] + i[46] + i[26] + i[1026] + i[485],
    jA = i[11] + i[33] + i[363],
    XA = i[998] + i[22] + i[1027],
    ZA = i[33] + i[628],
    zA = i[41] + i[637],
    KA = i[33] + i[875],
    JA = i[25] + i[26] + i[212] + i[1] + i[1028],
    QA = i[26] + i[802],
    qA = i[816] + i[1029] + i[814],
    tI = i[1030] + i[29] + i[71],
    iI = i[329] + i[26] + i[1031],
    nI = i[25] + i[41] + i[944] + i[26] + i[1031],
    eI = i[1032],
    sI = i[41] + i[944] + i[46] + i[1] + i[1033] + i[104] + i[141] + i[46] + i[26] + i[190],
    hI = i[620] + i[26] + i[212],
    rI = i[1030] + i[195] + i[484],
    aI = i[1034] + i[26] + i[802],
    oI = i[1035],
    fI = i[1036] + i[26] + i[201],
    cI = i[1037] + i[79] + i[744],
    uI = i[1038],
    _I = i[265] + i[1] + i[1039],
    lI = i[160] + i[1] + i[192] + i[53] + i[193],
    dI = i[22] + i[759] + i[61] + i[480],
    vI = i[22] + i[1009] + i[61] + i[480],
    bI = i[1040] + i[22] + i[1041],
    yI = i[1042] + i[79] + i[744],
    gI = i[811] + i[1] + i[751] + i[41] + i[637],
    EI = i[865] + i[22] + i[867] + i[22] + i[433],
    xI = i[865] + i[22] + i[867] + i[22] + i[436],
    pI = i[22] + i[78] + i[1043],
    TI = i[865] + i[22] + i[411] + i[22] + i[390],
    mI = i[49] + i[56] + i[1044],
    wI = i[865] + i[22] + i[411] + i[22] + i[1045],
    OI = i[1046] + i[530],
    AI = i[790] + i[22] + i[473] + i[22] + i[144],
    II = i[1047] + i[96],
    SI = i[1048] + i[46] + i[353] + i[72] + i[115] + i[761] + i[46] + i[1049] + i[208] + i[334],
    MI = i[672],
    kI = i[615] + i[208] + i[493] + i[757] + i[208] + i[39] + i[1050] + i[208] + i[61] + i[1051],
    CI = i[110] + i[67] + i[1052] + i[1053] + i[69],
    LI = i[790] + i[22] + i[473] + i[22] + i[143],
    RI = i[64] + i[1054],
    PI = i[22] + i[1055] + i[29] + i[1056],
    DI = i[615] + i[208] + i[493] + i[757] + i[208] + i[39] + i[1050],
    NI = i[66] + i[67] + i[353] + i[112] + i[353] + i[112] + i[353] + i[112] + i[353] + i[69],
    BI = i[22] + i[384],
    FI = i[384],
    GI = i[22] + i[78] + i[43] + i[1057],
    $I = i[1058],
    YI = i[22] + i[78] + i[172] + i[33],
    WI = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[39] + i[1050] + i[46] + i[487],
    UI = i[1048] + i[216] + i[405] + i[217] + i[632] + i[208] + i[561] + i[157] + i[66] + i[67] + i[353] + i[112] + i[353] + i[112] + i[353] + i[112] + i[353] + i[72] + i[320] + i[69],
    HI = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[39] + i[1050],
    VI = i[1048] + i[216] + i[353] + i[217],
    jI = i[1059],
    XI = i[216] + i[1048] + i[46] + i[278] + i[761] + i[46] + i[1060] + i[208] + i[457] + i[67] + i[353] + i[72] + i[407] + i[112] + i[353] + i[112] + i[353] + i[72] + i[407] + i[112] + i[405] + i[69],
    ZI = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[39] + i[1050] + i[216] + i[1058],
    zI = i[1048] + i[216] + i[405] + i[217],
    KI = i[216] + i[1048] + i[46] + i[353] + i[72] + i[278] + i[761] + i[46] + i[563],
    JI = i[22] + i[131],
    QI = i[22] + i[487],
    qI = i[1061],
    tS = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[33] + i[255] + i[61] + i[1062],
    iS = i[1063] + i[157] + i[115] + i[96] + i[1064] + i[634] + i[157] + i[752] + i[217] + i[1065] + i[208] + i[1066] + i[157] + i[378] + i[208] + i[1065] + i[217] + i[1065] + i[208] + i[380] + i[1067] + i[470] + i[46] + i[353] + i[96] + i[46] + i[353] + i[96] + i[46] + i[405] + i[96] + i[1064] + i[632] + i[208] + i[561] + i[157] + i[66] + i[67] + i[1068] + i[68] + i[1068] + i[68] + i[1068] + i[68] + i[353] + i[72] + i[278] + i[1069] + i[378] + i[208] + i[153] + i[157] + i[406] + i[96] + i[217] + i[1063] + i[157] + i[405] + i[96] + i[217],
    nS = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[33] + i[255] + i[61] + i[1062] + i[72] + i[1058] + i[1070] + i[615] + i[208] + i[493] + i[757] + i[208] + i[33] + i[255] + i[61] + i[1062] + i[216] + i[1058],
    eS = i[1063] + i[208] + i[119] + i[157] + i[407] + i[96] + i[217],
    sS = i[1063] + i[208] + i[118] + i[157] + i[407] + i[96] + i[217],
    hS = i[72] + i[615] + i[208] + i[493] + i[757] + i[208] + i[33] + i[255] + i[29] + i[1056],
    rS = i[216] + i[1048] + i[46] + i[278] + i[761] + i[46] + i[1060] + i[208] + i[457] + i[67] + i[353] + i[72] + i[407] + i[112] + i[353] + i[112] + i[353] + i[72] + i[407] + i[112] + i[405] + i[1069],
    aS = i[22] + i[137] + i[53] + i[372] + i[33] + i[358],
    oS = i[22] + i[135] + i[53] + i[372] + i[33] + i[358],
    fS = i[615] + i[208] + i[493] + i[757] + i[208] + i[33] + i[255] + i[29] + i[1056],
    cS = i[58] + i[26] + i[27],
    uS = i[811] + i[100] + i[1071],
    _S = i[61] + i[1072],
    lS = i[22] + i[78] + i[1073],
    dS = i[930],
    vS = i[893],
    bS = i[1074],
    yS = i[384] + i[1] + i[445],
    gS = i[1075] + i[22] + i[1076],
    ES = i[1075] + i[22] + i[411],
    xS = i[202] + i[495] + i[79] + i[809],
    pS = i[25] + i[43] + i[75] + i[26] + i[959],
    TS = i[22] + i[185] + i[1077],
    mS = i[22] + i[185] + i[1078],
    wS = i[22] + i[151] + i[1078],
    OS = i[22] + i[151] + i[33] + i[293],
    AS = i[22] + i[185] + i[33] + i[293],
    IS = i[1079],
    SS = i[508] + i[83] + i[496],
    MS = i[1080] + i[83] + i[181],
    kS = i[22] + i[151] + i[1077],
    CS = i[1081] + i[22] + i[1082] + i[22] + i[435] + i[22] + i[1083],
    LS = i[1081] + i[22] + i[898] + i[22] + i[1082] + i[22] + i[435] + i[22] + i[1083],
    RS = i[1081] + i[22] + i[898] + i[22] + i[1082] + i[22] + i[435] + i[22] + i[1084],
    PS = i[265],
    DS = i[3] + i[29] + i[960] + i[29] + i[276],
    NS = i[265] + i[29] + i[111],
    BS = i[619] + i[204] + i[224],
    FS = i[619] + i[361] + i[785],
    GS = i[808],
    $S = i[167] + i[53] + i[197] + i[29] + i[30] + i[1] + i[192] + i[41] + i[173],
    YS = i[175] + i[29] + i[30] + i[1] + i[192] + i[53] + i[193],
    WS = i[25] + i[53] + i[197] + i[29] + i[30] + i[1] + i[192],
    US = i[11] + i[53] + i[197] + i[29] + i[30] + i[1] + i[192] + i[41] + i[173],
    HS = i[1074] + i[41] + i[42],
    VS = i[22] + i[341] + i[320] + i[1085] + i[100] + i[103],
    jS = i[167] + i[53] + i[1086],
    XS = i[879] + i[53] + i[1087],
    ZS = i[1088],
    zS = i[1089],
    KS = i[1090],
    JS = i[479] + i[29] + i[111],
    QS = i[49] + i[1] + i[1091] + i[29] + i[468],
    qS = i[214] + i[53] + i[1087],
    tM = i[3] + i[53] + i[54] + i[53] + i[1087] + i[33] + i[875],
    iM = i[749] + i[29] + i[111],
    nM = i[329],
    eM = i[22] + i[78] + i[1092],
    sM = i[22] + i[78] + i[61] + i[267] + i[29] + i[960],
    hM = i[1093] + i[29] + i[111],
    rM = i[185] + i[41] + i[781] + i[29] + i[111],
    aM = i[329] + i[29] + i[960],
    oM = i[22] + i[78] + i[1094],
    fM = i[23] + i[26] + i[802] + i[61] + i[99] + i[100] + i[1e3],
    cM = i[1095],
    uM = i[22] + i[78] + i[1096],
    _M = i[1097],
    lM = i[108] + i[26] + i[109] + i[79] + i[783] + i[56] + i[1044] + i[316],
    dM = i[479] + i[79] + i[128],
    vM = i[1098],
    bM = i[64] + i[405] + i[53] + i[1099],
    yM = i[64] + i[26] + i[1100],
    gM = i[531] + i[22] + i[1101] + i[22] + i[532],
    EM = i[1102],
    xM = i[1] + i[1103] + i[33] + i[628] + i[100] + i[1e3],
    pM = i[23] + i[41] + i[637] + i[61] + i[99] + i[100] + i[1e3],
    TM = i[1] + i[1103] + i[41] + i[637] + i[100] + i[1e3],
    mM = i[26] + i[802] + i[316],
    wM = i[897] + i[22] + i[1104] + i[22] + i[1105] + i[22] + i[1106] + i[22] + i[1107] + i[22] + i[1108],
    OM = i[1109],
    AM = i[615] + i[208] + i[41] + i[944] + i[26] + i[1110],
    IM = i[1111] + i[1112] + i[1113] + i[26] + i[46] + i[405] + i[96],
    SM = i[320] + i[96],
    MM = i[1065] + i[33] + i[547],
    kM = i[1114],
    CM = i[25] + i[56] + i[57] + i[1] + i[192],
    LM = i[60] + i[26] + i[1031],
    RM = i[1115],
    PM = i[654] + i[323] + i[324],
    DM = i[194] + i[26] + i[959],
    NM = i[194] + i[33] + i[1116],
    BM = i[194],
    FM = i[23] + i[79] + i[1117],
    GM = i[58] + i[26] + i[1031],
    $M = i[1015] + i[272],
    YM = i[1118],
    WM = i[1015] + i[83] + i[78],
    UM = i[25] + i[33] + i[94] + i[1] + i[192],
    HM = i[23] + i[735],
    VM = i[58] + i[26] + i[1031] + i[204] + i[1119] + i[1] + i[285] + i[15] + i[341] + i[204] + i[740],
    jM = i[82] + i[83] + i[369],
    XM = i[41] + i[944] + i[26] + i[1110],
    ZM = i[651] + i[26] + i[1110],
    zM = i[185] + i[1] + i[445],
    KM = i[865] + i[22] + i[1120],
    JM = i[776] + i[26] + i[1121],
    QM = i[422] + i[22] + i[423],
    qM = i[1122] + i[33] + i[812] + i[39] + i[813],
    tk = i[811] + i[53] + i[1123] + i[1] + i[285] + i[83] + i[78] + i[15] + i[1124],
    ik = i[1125] + i[33] + i[293],
    nk = i[333] + i[83] + i[78] + i[15] + i[1124],
    ek = i[11] + i[33] + i[363] + i[61] + i[99] + i[100] + i[1e3],
    sk = i[26] + i[1031] + i[100] + i[1e3],
    hk = i[408],
    rk = i[743],
    ak = i[1126] + i[46] + i[511] + i[485],
    ok = i[46] + i[124] + i[46],
    fk = i[301] + i[33] + i[94],
    ck = i[749] + i[53] + i[1127] + i[26] + i[212],
    uk = i[49] + i[33] + i[1128],
    _k = i[269] + i[26] + i[1026],
    lk = i[998] + i[22] + i[1101] + i[22] + i[1129],
    dk = i[338] + i[26] + i[1026],
    vk = i[823] + i[204] + i[1130],
    bk = i[998] + i[22] + i[1101] + i[22] + i[1131],
    yk = i[1132],
    gk = i[1133] + i[22] + i[1129],
    Ek = i[22] + i[1134] + i[29] + i[1135],
    xk = i[49] + i[26] + i[959] + i[29] + i[111] + i[26] + i[1008],
    pk = i[49] + i[26] + i[959] + i[29] + i[111],
    Tk = i[49] + i[76] + i[958],
    mk = i[49] + i[1] + i[1136] + i[29] + i[111],
    wk = i[479] + i[41] + i[637],
    Ok = i[64] + i[1137],
    Ak = i[49] + i[26] + i[1008],
    Ik = i[82] + i[1] + i[267] + i[26] + i[212],
    Sk = i[22] + i[1138],
    Mk = i[22] + i[78] + i[61] + i[1033] + i[26] + i[1031],
    kk = i[49] + i[33] + i[1139],
    Ck = i[1140] + i[323] + i[324],
    Lk = i[49] + i[29] + i[111] + i[79] + i[1141],
    Rk = i[11] + i[29] + i[468] + i[33] + i[538] + i[61] + i[99] + i[100] + i[101],
    Pk = i[920] + i[22] + i[177],
    Dk = i[922],
    Nk = i[159] + i[29] + i[276],
    Bk = i[292] + i[33] + i[538],
    Fk = i[1142] + i[33] + i[538],
    Gk = i[159] + i[39] + i[369] + i[29] + i[276],
    $k = i[1143],
    Yk = i[1144],
    Wk = i[837],
    Uk = i[920] + i[22] + i[1145],
    Hk = i[922] + i[100] + i[101],
    Vk = i[920] + i[22] + i[1101] + i[22] + i[1131],
    jk = i[427] + i[22] + i[1146] + i[22] + i[908],
    Xk = i[427] + i[22] + i[1146] + i[22] + i[908] + i[22] + i[431],
    Zk = i[1146] + i[22] + i[427] + i[22] + i[541] + i[22] + i[1147],
    zk = i[1148],
    Kk = i[1146] + i[22] + i[427] + i[22] + i[541] + i[22] + i[1149],
    Jk = i[1150],
    Qk = i[1146] + i[22] + i[427] + i[22] + i[541],
    qk = i[22] + i[1151] + i[100] + i[103],
    tC = i[22] + i[1007],
    iC = i[22] + i[189] + i[1152] + i[282],
    nC = i[1153] + i[22] + i[1131],
    eC = i[1154] + i[33] + i[363] + i[195] + i[484],
    sC = i[108] + i[26] + i[109] + i[56] + i[1044] + i[316],
    hC = i[49] + i[33] + i[1155],
    rC = i[1153] + i[22] + i[1156],
    aC = i[82] + i[83] + i[228],
    oC = i[88] + i[79] + i[128],
    fC = i[11] + i[53] + i[1086],
    cC = i[811] + i[79] + i[1157] + i[33] + i[363] + i[61] + i[99] + i[79] + i[1158] + i[61] + i[1051],
    uC = i[1159],
    _C = i[1160],
    lC = i[22] + i[78] + i[1161],
    dC = i[22] + i[110] + i[29] + i[111],
    vC = i[22] + i[1162],
    bC = i[1163] + i[208] + i[988],
    yC = i[1164] + i[208] + i[988],
    gC = i[1165] + i[208] + i[988],
    EC = i[1166] + i[208] + i[988],
    xC = i[1167] + i[67] + i[175] + i[216] + i[511] + i[232] + i[1168] + i[217] + i[1169] + i[1170] + i[68] + i[643] + i[1171] + i[1172] + i[353] + i[1173] + i[1174] + i[1175] + i[1176] + i[1177] + i[189] + i[1178] + i[16] + i[407] + i[232] + i[172] + i[1176] + i[1179] + i[142] + i[115] + i[644] + i[353] + i[103] + i[115] + i[76] + i[99] + i[1180] + i[172] + i[643] + i[1181] + i[142] + i[1182] + i[341] + i[1183] + i[139] + i[1184] + i[320] + i[1185] + i[1186] + i[588] + i[39] + i[1187] + i[232] + i[29] + i[1188] + i[29] + i[1172] + i[195] + i[1189] + i[1190] + i[16] + i[1191] + i[99] + i[1192] + i[341] + i[232] + i[765] + i[1193] + i[1194] + i[1195] + i[588] + i[43] + i[1196] + i[493] + i[189] + i[271] + i[406] + i[1197] + i[530] + i[1198] + i[145] + i[1199] + i[1172] + i[405] + i[1] + i[528] + i[1200] + i[139] + i[43] + i[405] + i[99] + i[43] + i[406] + i[1201] + i[323] + i[1176] + i[272] + i[1172] + i[61] + i[1202] + i[1203] + i[1204] + i[1205] + i[1206] + i[1207] + i[189] + i[1208] + i[189] + i[1209] + i[407] + i[1176] + i[232] + i[406] + i[1210] + i[1211] + i[1212] + i[1213] + i[320] + i[1214] + i[1215] + i[407] + i[46] + i[407] + i[68] + i[337],
    pC = i[66] + i[67] + i[353] + i[112] + i[1216] + i[112] + i[353] + i[112] + i[405] + i[69],
    TC = i[64] + i[1217] + i[353],
    mC = i[22] + i[110] + i[361] + i[1218] + i[41] + i[1219],
    wC = i[49] + i[79] + i[1220],
    OC = i[49] + i[79] + i[1221],
    AC = i[22] + i[78] + i[1222],
    IC = i[898] + i[22] + i[1129],
    SC = i[22] + i[78] + i[1223],
    MC = i[556] + i[61] + i[480],
    kC = i[1224],
    CC = i[1225],
    LC = i[898] + i[22] + i[1131],
    RC = i[1226] + i[22] + i[1131],
    PC = i[79] + i[1227] + i[100] + i[1e3],
    DC = i[1153],
    NC = i[82] + i[33] + i[363],
    BC = i[352] + i[83] + i[78] + i[83] + i[936],
    FC = i[1118] + i[43] + i[515],
    GC = i[1228] + i[33] + i[1019] + i[43] + i[515],
    $C = i[1229] + i[22] + i[245],
    YC = i[615] + i[208] + i[83] + i[1230],
    WC = i[1231] + i[22] + i[895] + i[22] + i[271],
    UC = i[1231] + i[22] + i[895] + i[22] + i[272],
    HC = i[64] + i[1232],
    VC = i[405] + i[96] + i[46] + i[1111] + i[1112] + i[53] + i[172] + i[53] + i[172] + i[53] + i[172],
    jC = i[115] + i[96] + i[46] + i[406] + i[96],
    XC = i[1233],
    ZC = i[935],
    zC = i[3] + i[100] + i[1234],
    KC = i[1235] + i[22] + i[1236],
    JC = i[1237] + i[1238] + i[1239],
    QC = i[231] + i[1] + i[1240],
    qC = i[22] + i[1241],
    tL = i[3] + i[83] + i[1230] + i[26] + i[212],
    iL = i[989],
    nL = i[739],
    eL = i[22] + i[78] + i[1242],
    sL = i[82] + i[83] + i[1230],
    hL = i[58] + i[83] + i[282],
    rL = i[811] + i[83] + i[1230],
    aL = i[831] + i[53] + i[1243],
    oL = i[831] + i[53] + i[1244],
    fL = i[22] + i[49] + i[76] + i[77] + i[83] + i[282],
    cL = i[495] + i[43] + i[995],
    uL = i[811] + i[204] + i[1245] + i[644] + i[1246],
    _L = i[1247],
    lL = i[333] + i[61] + i[99] + i[195] + i[254] + i[26] + i[27],
    dL = i[1030],
    vL = i[22] + i[78] + i[1248],
    bL = i[1081] + i[22] + i[541] + i[22] + i[506],
    yL = i[808] + i[72] + i[338] + i[72] + i[329],
    gL = i[998] + i[22] + i[1145],
    EL = i[808] + i[72] + i[1249],
    xL = i[808] + i[72] + i[338] + i[72] + i[1007],
    pL = i[808] + i[72] + i[1250],
    TL = i[808] + i[72] + i[1251],
    mL = i[920] + i[22] + i[1101] + i[22] + i[1129],
    wL = i[922] + i[72] + i[338] + i[72] + i[329],
    OL = i[922] + i[72] + i[1249],
    AL = i[922] + i[72] + i[338] + i[72] + i[1007],
    IL = i[922] + i[72] + i[167],
    SL = i[922] + i[72] + i[11],
    ML = i[988] + i[72] + i[329],
    kL = i[1252],
    CL = i[988] + i[72] + i[1007],
    LL = i[110] + i[72] + i[329],
    RL = i[1253],
    PL = i[110] + i[72] + i[1007],
    DL = i[1014] + i[72] + i[329],
    NL = i[1133] + i[22] + i[1131],
    BL = i[1014] + i[72] + i[1007],
    FL = i[868] + i[72] + i[815],
    GL = i[816] + i[72] + i[836],
    $L = i[1118] + i[72] + i[329],
    YL = i[1118] + i[72] + i[1254],
    WL = i[1118] + i[72] + i[1007],
    UL = i[280] + i[72] + i[259],
    HL = i[22] + i[1030] + i[33] + i[358],
    VL = i[749] + i[195] + i[484],
    jL = i[749] + i[100] + i[1e3] + i[195] + i[484],
    XL = i[22] + i[78] + i[61] + i[267] + i[195] + i[484],
    ZL = i[514] + i[100] + i[1255],
    zL = i[1081] + i[22] + i[541] + i[22] + i[1256],
    KL = i[1257],
    JL = i[1081] + i[22] + i[541] + i[22] + i[1258],
    QL = i[1259],
    qL = i[1081] + i[22] + i[541] + i[22] + i[1260],
    tR = i[1261],
    iR = i[1081] + i[22] + i[541] + i[22] + i[1262] + i[22] + i[1263] + i[22] + i[422],
    nR = i[23] + i[72] + i[1264] + i[72] + i[816],
    eR = i[1081] + i[22] + i[541] + i[22] + i[1262] + i[22] + i[422],
    sR = i[23] + i[72] + i[816],
    hR = i[1081] + i[22] + i[541] + i[22] + i[1262] + i[22] + i[851],
    rR = i[23] + i[72] + i[888],
    aR = i[23] + i[72] + i[459],
    oR = i[1081] + i[22] + i[541] + i[22] + i[1262] + i[22] + i[409],
    fR = i[29] + i[1033] + i[100] + i[1e3],
    cR = i[33] + i[363] + i[100] + i[1e3],
    uR = i[204] + i[1245] + i[644] + i[1246] + i[100] + i[1e3],
    _R = i[53] + i[1123] + i[1] + i[285] + i[100] + i[1e3],
    lR = i[26] + i[1265] + i[100] + i[1e3],
    dR = i[83] + i[1230] + i[100] + i[1e3],
    vR = i[79] + i[1157] + i[33] + i[363] + i[100] + i[1e3],
    bR = i[41] + i[1266],
    yR = i[3] + i[317] + i[480],
    gR = i[1267],
    ER = i[840],
    xR = i[1268],
    pR = i[1269],
    TR = i[891] + i[43] + i[1270],
    mR = i[3] + i[41] + i[850] + i[79] + i[1271],
    wR = i[989] + i[41] + i[1272],
    OR = i[933] + i[22] + i[150],
    AR = i[933] + i[22] + i[148],
    IR = i[933] + i[22] + i[146],
    SR = i[933] + i[22] + i[149],
    MR = i[933] + i[22] + i[150] + i[22] + i[144],
    kR = i[933] + i[22] + i[150] + i[22] + i[146],
    CR = i[933] + i[22] + i[143] + i[22] + i[144],
    LR = i[933] + i[22] + i[143] + i[22] + i[146],
    RR = i[933] + i[22] + i[146] + i[22] + i[143],
    PR = i[933] + i[22] + i[144] + i[22] + i[143],
    DR = i[933] + i[22] + i[144] + i[22] + i[150],
    NR = i[1273],
    BR = i[1274] + i[72] + i[1275],
    FR = i[945] + i[22] + i[411] + i[22] + i[1276] + i[22] + i[964],
    GR = i[1273] + i[72] + i[1176],
    $R = i[1273] + i[72] + i[1277],
    YR = i[945] + i[22] + i[411] + i[22] + i[1278] + i[22] + i[1279],
    WR = i[49] + i[361] + i[1280] + i[53] + i[934],
    UR = i[265] + i[33] + i[94],
    HR = i[22] + i[78] + i[172] + i[83],
    VR = i[49] + i[41] + i[1281],
    jR = i[163] + i[1] + i[2] + i[53] + i[934],
    XR = i[22] + i[78] + i[1208],
    ZR = i[3] + i[1282] + i[550],
    zR = i[3] + i[1283] + i[550],
    KR = i[3] + i[41] + i[850] + i[83] + i[181],
    JR = i[1176] + i[493] + i[550],
    QR = i[1277] + i[493] + i[550],
    qR = i[616] + i[83] + i[181],
    tP = i[879] + i[41] + i[850],
    iP = i[163] + i[61] + i[480],
    nP = i[22] + i[78] + i[172] + i[617] + i[41] + i[539],
    eP = i[22] + i[588] + i[405],
    sP = i[22] + i[16] + i[271],
    hP = i[635] + i[1284],
    rP = i[635] + i[1285],
    aP = i[22] + i[1286] + i[29] + i[760] + i[1] + i[2] + i[53] + i[934],
    oP = i[840] + i[271],
    fP = i[840] + i[272],
    cP = i[22] + i[78] + i[584],
    uP = i[22] + i[78] + i[1287],
    _P = i[1288] + i[76] + i[341],
    lP = i[22] + i[78] + i[172] + i[43],
    dP = i[230] + i[39] + i[484] + i[100] + i[1289],
    vP = i[230] + i[26] + i[802] + i[100] + i[1289],
    bP = i[869] + i[26] + i[1290] + i[76] + i[284],
    yP = i[749] + i[195] + i[1291] + i[39] + i[824],
    gP = i[620] + i[41] + i[850] + i[53] + i[186],
    EP = i[1292],
    xP = i[1125] + i[41] + i[850] + i[53] + i[186],
    pP = i[3] + i[195] + i[1293] + i[100] + i[1294],
    TP = i[616] + i[53] + i[186],
    mP = i[840] + i[1] + i[828],
    wP = i[816] + i[1] + i[828],
    OP = i[1295],
    AP = i[273] + i[33] + i[344],
    IP = i[1296],
    SP = i[49] + i[79] + i[1297],
    MP = i[22] + i[277] + i[209] + i[140],
    kP = i[58],
    CP = i[329] + i[43] + i[1298],
    LP = i[61] + i[1299] + i[41] + i[1266],
    RP = i[1300],
    PP = i[1301],
    DP = i[1302],
    NP = i[1303] + i[22] + i[1304] + i[22] + i[1305],
    BP = i[882] + i[22] + i[541] + i[22] + i[1306],
    FP = i[513],
    GP = i[882] + i[22] + i[541] + i[22] + i[1307],
    $P = i[1308],
    YP = i[3] + i[39] + i[484] + i[33] + i[94],
    WP = i[1309],
    UP = i[522] + i[33] + i[1310],
    HP = i[3] + i[79] + i[625],
    VP = i[153] + i[195] + i[484],
    jP = i[840] + i[405],
    XP = i[840] + i[115],
    ZP = i[422] + i[22] + i[423] + i[22] + i[1120],
    zP = i[22] + i[103] + i[199] + i[61] + i[1311] + i[76] + i[200],
    KP = i[22] + i[78] + i[1190],
    JP = i[22] + i[78] + i[172] + i[56],
    QP = i[22] + i[765] + i[1312] + i[341] + i[61] + i[800],
    qP = i[1313] + i[100] + i[1314],
    tD = i[1315],
    iD = i[1315] + i[271],
    nD = i[49] + i[100] + i[1316],
    eD = i[1317],
    sD = i[1315] + i[272],
    hD = i[1125],
    rD = i[1318],
    aD = i[867] + i[22] + i[130],
    oD = i[1319],
    fD = i[616] + i[195] + i[1320],
    cD = i[616] + i[26] + i[1321],
    uD = i[1322],
    _D = i[22] + i[1323] + i[76] + i[1324],
    lD = i[1325],
    dD = i[1326],
    vD = i[869] + i[26] + i[1290],
    bD = i[749] + i[26] + i[1290],
    yD = i[33] + i[1327] + i[41] + i[1266],
    gD = i[1049] + i[15] + i[340] + i[33] + i[1328],
    ED = i[159] + i[41] + i[1272],
    xD = i[22] + i[78] + i[172] + i[1270],
    pD = i[22] + i[1329],
    TD = i[108] + i[26] + i[109] + i[100] + i[341] + i[26] + i[802],
    mD = i[108] + i[26] + i[109] + i[15] + i[340] + i[26] + i[802],
    wD = i[198] + i[46] + i[126],
    OD = i[108] + i[26] + i[109] + i[61] + i[99] + i[83] + i[1330] + i[61] + i[1331] + i[76] + i[819] + i[33] + i[1332],
    AD = i[108] + i[26] + i[109] + i[61] + i[99] + i[83] + i[1330] + i[53] + i[818] + i[76] + i[819] + i[33] + i[1332],
    ID = i[22] + i[1333],
    SD = i[448] + i[39] + i[484],
    MD = i[22] + i[151],
    kD = i[185] + i[1] + i[476],
    CD = i[1334],
    LD = i[49] + i[1335],
    RD = i[49] + i[15] + i[1336],
    PD = i[49] + i[204] + i[1337],
    DD = i[49] + i[76] + i[1338],
    ND = i[49] + i[33] + i[1339],
    BD = i[53] + i[54] + i[33] + i[875],
    FD = i[1] + i[1340],
    GD = i[493] + i[757],
    $D = i[61] + i[211] + i[316],
    YD = i[39] + i[484] + i[316],
    WD = i[33] + i[1341],
    UD = i[29] + i[468],
    HD = i[100] + i[1e3] + i[26] + i[27],
    VD = i[493] + i[757] + i[195] + i[196],
    jD = i[26] + i[802] + i[61] + i[800],
    XD = i[83] + i[1342] + i[41] + i[1266],
    ZD = i[115] + i[72] + i[353],
    zD = i[115] + i[72] + i[199] + i[72] + i[199] + i[72] + i[407] + i[208] + i[876] + i[115],
    KD = i[1343],
    JD = i[615] + i[734] + i[485] + i[53] + i[1344] + i[46] + i[1] + i[1345] + i[46] + i[108] + i[46] + i[735] + i[320] + i[232] + i[1] + i[445],
    QD = i[343] + i[1086],
    qD = i[1346] + i[53] + i[685],
    tN = i[405] + i[232] + i[199] + i[232] + i[1347];

  function iN(t, i, n) {
    if (t[T]()) {
      var e = t._gY || t[r]();
      if (e) {
        for (var s = 0, h = (e = e._kE || e).length; s < h; s++)
          if (!1 === i[p](n, e[s]) || !1 === iN(e[s], i, n)) return !1;
        return !0
      }
    }
  }

  function nN(t) {
    if (!t.hasChildren()) return t instanceof wY ? t : null;
    for (var i, n = t._gY._kE, e = n[N] - 1; 0 <= e;) {
      if (i = nN(i = n[e])) return i;
      e--
    }
    return null
  }

  function eN(t, i, n, e) {
    return e ? function t(i, n, e) {
      for (var s, h = 0, r = (i = i._kE || i)[N]; h < r; h++)
        if ((s = i[h])[T]() && !t(s[y], n, e) || !1 === n[p](e, s)) return !1;
      return !0
    }(t, i, n) : function t(i, n, e) {
      for (var s, h = 0, r = (i = i._kE || i)[N]; h < r; h++)
        if (s = i[h], !1 === n.call(e, s) || s[T]() && !t(s.children, n, e)) return !1;
      return !0
    }(t, i, n)
  }

  function sN(t, i, n, e) {
    return e ? function t(i, n, e) {
      for (var s, h = (i = i._kE || i)[N] - 1; 0 <= h; h--)
        if ((s = i[h])[T]() && !t(s[y], n, e) || !1 === n.call(e, s)) return !1;
      return !0
    }(t, i, n) : function t(i, n, e) {
      for (var s, h = (i = i._kE || i)[N] - 1; 0 <= h; h--)
        if (s = i[h], !1 === n[p](e, s) || s[T]() && !t(s[y], n, e)) return !1;
      return !0
    }(t, i, n)
  }

  function hN(t, i, n) {
    for (var e, s = (t._kE || t)[C](0); s[N];) {
      if (e = s[0], s = s[m](1), !1 === i[p](n, e)) return !1;
      if (e[T]()) {
        var h = e[y];
        h = h._kE || h, s = s[B](h)
      }
    }
    return !0
  }

  function rN(t, f) {
    function e(t, i) {
      for (var n = t[N], e = i[N], s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s;) r === n ? h[o++] = i[a++] : a === e || f(t[r], i[a]) <= 0 ? h[o++] = t[r++] : h[o++] = i[a++];
      return h
    }

    function s(t) {
      var i = t[N],
        n = Math[c](i / 2);
      return i <= 1 ? t : e(s(t[C](0, n)), s(t[C](n)))
    }
    return s(t)
  }

  function aN(t, i, n, e) {
    t instanceof hB && (t = t._kE);
    for (var s = 0, h = (t._kE || t)[N]; s < h; s++)
      if (!1 === i[p](n, t[s], s, e)) return !1;
    return !0
  }

  function oN(t, i, n) {
    for (var e = t instanceof hB, s = t._kE || t, h = 0, r = s.length; h < r; h++) {
      var a = s[h];
      i[p](n, a) && (e ? t[o](a) : t[m](h, 1), h--, r--)
    }
  }

  function fN(t, i, n, e) {
    t instanceof hB && (t = t._kE);
    for (var s = (t._kE || t)[N] - 1; 0 <= s; s--)
      if (!1 === i[p](n, t[s], s, e)) return !1;
    return !0
  }

  function cN(t) {
    if (t[l] instanceof Function) return t[l](!0);
    var i, n = [];
    return aN(t, function (t) {
      i = t && t[l] instanceof Function ? t[l]() : t, n[M](i)
    }, this), n
  }

  function uN(t, i, n) {
    n === k || n < 0 ? t[M](i) : t[m](n, 0, i)
  }

  function _N(t, i) {
    var n = t[b](i);
    return !(n < 0 || n >= t.length) && t.splice(n, 1)
  }

  function lN(t, i) {
    var n = t;
    for (var e in i)
      if (i.__lookupGetter__) {
        var s = i.__lookupGetter__(e),
          h = i.__lookupSetter__(e);
        s || h ? (s && n.__defineGetter__(e, s), h && n.__defineSetter__(e, h)) : n[e] = i[e]
      } else n[e] = i[e];
    return n
  }

  function dN(t, i, n) {
    if (!(t instanceof Function)) throw new Error("subclass must be type of Function");
    var e = null;

    function s() {}
    a == typeof i && (e = i, i = t, t = function () {
      i.apply(this, arguments)
    });
    var h = t[_];
    return s.prototype = i[_], t.prototype = new s, t[f] = i[_], t[f].constructor = i, lN(t[_], h), e && lN(t[_], e), n && lN(t.prototype, n), t.prototype.class = t
  }

  function vN(t, i, n) {
    return bN(t, i, "constructor", n)
  }

  function bN(t, i, n, e) {
    var s = i[f];
    if (s) {
      var h = s[n];
      return h ? h[d](t, e) : void 0
    }
  }

  function yN(t, i, n, e) {
    if ("constructor" == n) return gN(t, i, e);
    if (i[v] instanceof Function) {
      var s = i.super_[_][n];
      return s instanceof Function ? s[d](t, e) : void 0
    }
  }

  function gN(t, i, n) {
    if (i.super_ instanceof Function) return i[v][d](t, n)
  }

  function EN(t, i, n) {
    var e, s;
    if (!(t instanceof Function) && t instanceof Object) return i = t[g], t.hasOwnProperty("constructor") ? (e = t.constructor, delete t.constructor) : e = i ? function () {
      i.apply(this, arguments)
    } : function () {}, EN(e, i, t);
    if (i && !(i instanceof Function) && i instanceof Object) return EN(t, i.super, i);
    if (i && (s = i, t[v] = s, t[_] = Object[E](s[_], {
        super_: {
          value: s,
          enumerable: !1
        },
        constructor: {
          value: t,
          enumerable: !1
        }
      })), n) {
      var h = t.prototype;
      for (var r in n) h[r] = n[r]
    }
    return t
  }

  function xN(t, e, i, n, s) {
    if (n) Object.defineProperty(t, e, {
      value: i,
      enumerable: !0
    });
    else {
      var h = {
          configurable: !0,
          enumerable: !0
        },
        r = w + e;
      i !== k && (t[r] = i), h.get = function () {
        return this[r]
      }, h.set = function (t) {
        var i = this[r];
        if (i == t) return !1;
        var n = new MB(this, e, t, i);
        return !!this.beforeEvent(n) && (this[r] = t, s && s[p](this, t, i), this[O](n), !0)
      }, Object[A](t, e, h)
    }
  }

  function pN(t, i) {
    for (var n = 0, e = i[N]; n < e; n++) {
      var s = i[n];
      xN(t, s.name || s, s.defaultValue || s.value, s[h], s[I])
    }
  }
  var TN = 0;
  if (u[n]) {
    var mN = navigator.userAgent,
      wN = /opera/i [S](mN),
      ON = !wN && /msie/i.test(mN),
      AN = /rv:11.0/i.test(mN),
      IN = /MSIE 10./i [S](mN);
    if (/Edge/i [S](mN), AN && (ON = !0), /msie\s[6,7,8]/i [S](mN)) throw new Error("your browser is not supported");
    var SN = /webkit|khtml/i [S](mN),
      MN = !SN && /gecko/i.test(mN),
      kN = /firefox\//i.test(mN),
      CN = /Chrome\//i [S](mN),
      LN = !CN && /Safari\//i.test(mN),
      RN = /Macintosh;/i [S](mN),
      PN = /(iPad|iPhone|iPod)/g.test(mN),
      DN = /Android/g [S](mN),
      NN = /Windows Phone/g.test(mN),
      BN = (PN || DN || NN) && L in u,
      FN = mN.match(/AppleWebKit\/([0-9\.]*)/);
    if (FN && 1 < FN.length) parseFloat(FN[1]);
    DN && parseFloat(mN.match(/Android\s([0-9\.]*)/)[1])
  }

  function GN(t, i) {
    return t[R] = i, t
  }

  function $N(t, i) {
    if (!t.hasOwnProperty(P)) {
      var n = t[D](F);
      if (!n) return GN(t, i);
      for (var e = n[G]($), s = 0, h = e.length; s < h; s++)
        if (e[s] == i) return;
      return GN(t, n += $ + i)
    }
    t[P].add(i)
  }

  function YN(t, i) {
    if (!t.hasOwnProperty(P)) {
      var n = t[D](F);
      if (!n || !n.indexOf(i)) return;
      for (var e = "", s = n[G]($), h = 0, r = s.length; h < r; h++) s[h] != i && (e += s[h] + $);
      return GN(t, e)
    }
    t[P][o](i)
  }

  function WN(t) {
    return !isNaN(t) && t instanceof Number || Y == typeof t
  }

  function UN(t) {
    return t !== k && (t instanceof String || e == typeof t)
  }

  function HN(t) {
    return Array[W](t)
  }

  function VN(t) {
    (t = t || u[U])[s] ? t[s](): t[H] = !1
  }

  function jN(t) {
    (t = t || u[U]).stopPropagation ? t[V]() : t[j] || (t.cancelBubble = !0)
  }

  function XN(t) {
    VN(t), jN(t)
  }

  function ZN(t) {
    return Math.floor(Math[X]() * t)
  }

  function zN(t) {
    return 0 < t ? Math.floor(t) : Math.ceil(t)
  }

  function KN(t) {
    return 0 < t ? Math[c](t) : Math.floor(t)
  }

  function JN(t) {
    return t < 16777216 ? Z + (z + t.toString(16))[C](-6) : K + (t >> 16 & 255) + J + (t >> 8 & 255) + J + (255 & t) + J + ((t >> 24 & 255) / 255).toFixed(2) + Q
  }

  function QN(t, i, n) {
    a != typeof n || n.hasOwnProperty(q) || (n[q] = !0), Object.defineProperty(t, i, n)
  }

  function qN(t, i) {
    for (var n in i)
      if (tt != n[0]) {
        var e = i[n];
        a != typeof e || e.hasOwnProperty(q) || (e[q] = !0)
      } Object[it](t, i)
  }

  function tB(t, i) {
    i = i || u;
    for (var n = t[G](nt), e = 0, s = n[N]; e < s; e++) i = i[n[e]];
    return i
  }

  function iB(t) {
    return t instanceof MouseEvent || t instanceof Object && t.touches !== k
  }

  function nB(t) {
    u[et] && console.log[d](console, arguments)
  }

  function eB(t) {
    u.console && console.error(t)
  }
  u.requestAnimationFrame || (u[st] = u.webkitRequestAnimationFrame || u.mozRequestAnimationFrame || u[ht] || u[rt] || function (t, i) {
    return u[at](function () {
      t()
    }, 1e3 / 60)
  }), u[ot] || (u[ot] = u[ft] || u[ct] || u[ut] || u.msCancelAnimationFrame || function (t) {
    return u[_t](t)
  });
  var sB = {
    SELECTION_TOLERANCE: BN ? 7 : 4,
    LABEL_COLOR: lt
  };
  qN(sB, {
    FONT_STYLE: {
      get: function () {
        return this[dt] || (this[dt] = vt)
      },
      set: function (t) {
        this[dt] != t && (this[dt] = t, this[bt] = !0)
      }
    },
    FONT_SIZE: {
      get: function () {
        return this[yt] || (this[yt] = 12)
      },
      set: function (t) {
        this[yt] != t && (this[yt] = t, this._fontChanged = !0)
      }
    },
    FONT_FAMILY: {
      get: function () {
        return this._fontFamily || (this._fontFamily = "Verdana,helvetica,arial,sans-serif")
      },
      set: function (t) {
        this[gt] != t && (this[gt] = t, this[bt] = !0)
      }
    },
    FONT: {
      get: function () {
        return !this[bt] && this[bt] !== k || (this._fontChanged = !1, this[Et] = this.FONT_STYLE + $ + this.FONT_SIZE + xt + this[pt]), this._font
      }
    }
  });
  var hB = function (t) {
    this._kE = [], this._mS = {}, t && this.add(t)
  };
  hB[_] = {
    _kE: null,
    _mS: null,
    get: function (t) {
      return this[Tt](t)
    },
    getById: function (t) {
      return this._mS[t]
    },
    getByIndex: function (t) {
      return this._kE[t]
    },
    forEach: function (t, i, n) {
      return aN(this._kE, t, i, n)
    },
    forEachReverse: function (t, i, n) {
      return fN(this._kE, t, i, n)
    },
    size: function () {
      return this._kE[N]
    },
    contains: function (t) {
      return this[mt](t.id)
    },
    containsById: function (t) {
      return this._mS.hasOwnProperty(t)
    },
    setIndex: function (t, i) {
      var n = this._kE.indexOf(t);
      if (n < 0) throw new Error(wt + t.id + Ot);
      return n != i && (this._kE[m](n, 1), this._kE[m](i, 0, t), !0)
    },
    setIndexAfter: function (t, i) {
      var n = this._kE.indexOf(t);
      if (n < 0) throw new Error(wt + t.id + Ot);
      return n == i ? i : n == i + 1 ? i + 1 : (i < n && (i += 1), this._kE[m](n, 1), this._kE[m](i, 0, t), i)
    },
    setIndexBefore: function (t, i) {
      var n = this._kE.indexOf(t);
      if (n < 0) throw new Error(wt + t.id + Ot);
      return n == i ? i : n == i - 1 ? i - 1 : (n < i && --i, this._kE.splice(n, 1), this._kE[m](i, 0, t), i)
    },
    indexOf: function (t) {
      return this._kE.indexOf(t)
    },
    getIndexById: function (t) {
      var i = this.getById(t);
      return i ? this._kE.indexOf(i) : -1
    },
    add: function (t, i) {
      return HN(t) ? this._gW(t, i) : this._lT(t, i)
    },
    addFirst: function (t) {
      return this.add(t, 0)
    },
    _gW: function (t, i) {
      if (0 == t[N]) return !1;
      for (var n = !1, e = 0 <= i, s = 0, h = (t = t._kE || t)[N]; s < h; s++) {
        var r = t[s];
        null !== r && r !== k && this._lT(r, i, !0) && (n = !0, e && i++)
      }
      return n
    },
    _lT: function (t, i, n) {
      var e = t.id;
      return e !== k && !this[mt](e) && (uN(this._kE, t, i), this._mS[e] = t)
    },
    remove: function (t) {
      return HN(t) ? this._oAF(t) : t.id ? this._gS(t.id, t) : this[At](t)
    },
    _oAF: function (t) {
      if (0 == t[N]) return !1;
      for (var i = !1, n = 0, e = (t = t._kE || t)[N]; n < e; n++) {
        var s = t[n];
        if (null !== s && s !== k) {
          s.id === k && (s = this._mS[s]);
          var h = s.id;
          this._gS(h, s, !0) && (i = !0)
        }
      }
      return i
    },
    _gS: function (t, i, n) {
      return !(t === k || !this.containsById(t) || (null !== i && i !== k || (i = this[It](t)), delete this._mS[t], _N(this._kE, i), 0))
    },
    removeById: function (t) {
      var i = this._mS[t];
      return !!i && this._gS(t, i)
    },
    set: function (t) {
      if (!t || 0 == t) return this[St]();
      if (this.isEmpty() || !HN(t)) return this[St](), this.add(t);
      var i = [],
        n = {},
        e = 0;
      if (aN(t, function (t) {
          this._mS[t.id] ? (n[t.id] = t, e++) : i.push(t)
        }, this), e != this[N]) {
        var s = [];
        this[Mt](function (t) {
          n[t.id] || s[M](t)
        }, this), s.length && this._oAF(s)
      }
      return i[N] && this._gW(i), !0
    },
    clear: function () {
      return !this.isEmpty() && (this._kE[N] = 0, this._mS = {}, !0)
    },
    toDatas: function () {
      return this._kE.slice(0)
    },
    isEmpty: function () {
      return 0 == this._kE[N]
    },
    valueOf: function () {
      return this._kE.length
    },
    clone: function (t) {
      var i = new hB;
      return t ? i.add(cN(this._kE)) : i.add(this.toDatas()), i
    }
  }, qN(hB[_], {
    datas: {
      get: function () {
        return this._kE
      }
    },
    random: {
      get: function () {
        return this._kE && this._kE.length ? this._kE[ZN(this._kE.length)] : null
      }
    },
    length: {
      get: function () {
        return this._kE ? this._kE[N] : 0
      }
    }
  });

  function rB(t, i, n, e) {
    var s = t - n,
      h = i - e;
    return Math.sqrt(s * s + h * h)
  }
  var aB = 2 * Math.PI,
    oB = .5 * Math.PI,
    fB = function (t, i, n) {
      t instanceof fB && (i = t.y, n = (t = t.x)[kt]), this.set(t, i, n)
    };
  fB[_] = {
    x: 0,
    y: 0,
    rotate: k,
    set: function (t, i, n) {
      this.x = t || 0, this.y = i || 0, this[kt] = n || 0
    },
    negate: function () {
      this.x = -this.x, this.y = -this.y
    },
    offset: function (t, i) {
      this.x += t, this.y += i
    },
    equals: function (t) {
      return this.x == t.x && this.y == t.y
    },
    distanceTo: function (t) {
      return rB(this.x, this.y, t.x, t.y)
    },
    toString: function () {
      return Ct + this.x + Lt + this.y + Q
    },
    clone: function () {
      return new fB(this.x, this.y)
    }
  }, Object[A](fB[_], Rt, {
    get: function () {
      return Math.sqrt(this.x * this.x + this.y * this.y)
    }
  });

  function cB(t, i, n, e) {
    t !== k && this._nY(t, i, n, e)
  }

  function uB(t, i, n) {
    var e, s, h;
    0 == t._o9 ? (e = -1, h = 0, s = i) : 0 == t._oB ? (e = 0, h = 1, s = n) : (e = -1 / t._o9, s = (t._o9 - e) * i + t._oA, h = 1);
    var r = new cB;
    return r._o9 = e, r._oA = s, r._oB = h, r._o4 = i, r._o5 = n, r._mJ = Math[Pt](e, h), r[Dt] = Math.cos(r._mJ), r[Nt] = Math.sin(r._mJ), r
  }

  function _B(t, i, n, e, s) {
    var h, r, a, o;
    if (e < i ? h = -1 : i < e && (h = 1), s < n ? r = -1 : n < s && (r = 1), !h) return {
      x: i,
      y: o = r < 0 ? t.y : t.bottom
    };
    if (!r) return {
      x: a = h < 0 ? t.x : t.right,
      y: n
    };
    var f = (n - s) / (i - e),
      c = n - f * i,
      u = h < 0 ? i - t.x : i - t[Bt],
      _ = r < 0 ? n - t.y : n - t[Ft];
    return Math.abs(f) >= Math.abs(_ / u) ? a = ((o = r < 0 ? t.y : t[Ft]) - c) / f : o = f * (a = h < 0 ? t.x : t.right) + c, {
      x: a,
      y: o
    }
  }

  function lB(t, i) {
    this[Yt] = t, this[Wt] = i
  }

  function dB(t, i, n, e, s, h, r, a) {
    return !(r <= 0 || a <= 0 || n <= 0 || e <= 0) && (a += h, n += t, e += i, ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
  }

  function vB(t, i, n, e, s, h) {
    return t <= s && s <= t + n && i <= h && h <= i + e
  }

  function bB(t, i, n, e, s, h, r, a, o) {
    return o && (t -= o, i -= o, n += o + o, e += o + o), t <= s && i <= h && s + r <= t + n && h + a <= i + e
  }
  cB[_] = {
    _o4: null,
    _o5: null,
    _o6: null,
    _o8: null,
    _o9: null,
    _oA: null,
    _oB: 1,
    _nY: function (t, i, n, e) {
      this._o4 = t, this._o5 = i, this._o6 = n, this._o8 = e, t == n ? (this._o9 = -1, this._oB = 0, this._oA = t) : (this._o9 = (i - e) / (t - n), this._oA = i - this._o9 * t, this._oB = 1), this._mJ = Math[Pt](this._o8 - this._o5, this._o6 - this._o4), this[Dt] = Math.cos(this._mJ), this[Nt] = Math.sin(this._mJ)
    },
    _dE: function (t) {
      return 0 == this._oB ? Number.NaN : this._o9 * t + this._oA
    },
    _dG: function (t) {
      return 0 == this._o9 ? Number.NaN : (t - this._oA) / this._o9
    },
    _$g: function (t) {
      var i, n, e, s, h, r, a, o = t[0],
        f = t[2],
        c = t[4],
        u = t[1],
        _ = t[3],
        l = t[5],
        d = this._o9,
        v = this._oA;
      if (0 != (h = 0 == this._oB ? (e = Math.sqrt((-d * d * o - d * v) * c + d * d * f * f + 2 * d * v * f - d * v * o), s = -d * f + d * o, d * c - 2 * d * f + d * o) : (e = Math[Gt]((d * o - u + v) * l + _ * _ + (-2 * d * f - 2 * v) * _ + (d * c + v) * u + (-d * d * o - d * v) * c + d * d * f * f + 2 * d * v * f - d * v * o), s = -_ + u + d * f - d * o, l - 2 * _ + u - d * c + 2 * d * f - d * o))) return n = (-e + s) / h, 0 <= (i = (e + s) / h) && i <= 1 && (r = $F(i, t)), 0 <= n && n <= 1 && (a = $F(n, t)), r && a ? [r, a] : r || a || void 0
    },
    _3U: function (t, i, n) {
      if (this._o9 == t._o9 || 0 == this._oB && 0 == t._oB) return null;
      var e, s, h, r, a;
      if (e = 0 == this._oB ? this._oA : 0 == t._oB ? t._oA : (t._oA - this._oA) / (this._o9 - t._o9), s = 0 == this._o9 ? this._oA : 0 == t._o9 ? t._oA : this._oB ? this._o9 * e + this._oA : t._o9 * e + t._oA, !i) return {
        x: e,
        y: s
      };
      if (n) r = -(h = -i / 2);
      else {
        var o = -(h = -rB(this._o4, this._o5, e, s)) + (r = rB(this._o6, this._o8, e, s));
        if (i < o) {
          var f = i / o;
          h *= f, r *= f
        } else a = (i - o) / 2
      }
      var c = this._7A(e, s, h),
        u = this._7A(e, s, r);
      return a && (c._rest = a, u[$t] = a), [c, u]
    },
    _7A: function (t, i, n) {
      return 0 == this._oB ? {
        x: t,
        y: i + n
      } : {
        x: t + n * this[Dt],
        y: i + n * this[Nt]
      }
    }
  }, lB[_] = {
    width: 0,
    height: 0,
    isEmpty: function () {
      return this.width <= 0 || this.height <= 0
    },
    clone: function () {
      return new lB(this[Yt], this[Wt])
    },
    toString: function () {
      return Ut + this[Yt] + Lt + this[Wt] + Q
    }
  };
  var yB = function (t, i, n, e) {
    t instanceof Object && !WN(t) && (i = t.y, n = t[Yt], e = t[Wt], t = t.x), n === k && (n = -1), e === k && (e = -1), this.x = t || 0, this.y = i || 0, this[Yt] = n, this[Wt] = e
  };

  function gB(t, i, n, e) {
    1 == arguments[N] ? i = n = e = t : 2 == arguments[N] && (n = t, e = i), this.set(t, i, n, e)
  }
  yB[_] = {
    x: 0,
    y: 0,
    width: -1,
    height: -1,
    setByRect: function (t) {
      this.x = t.x || 0, this.y = t.y || 0, this[Yt] = t.width || 0, this[Wt] = t[Wt] || 0
    },
    set: function (t, i, n, e) {
      this.x = t || 0, this.y = i || 0, this[Yt] = n || 0, this[Wt] = e || 0
    },
    offset: function (t, i) {
      return this.x += t, this.y += i, this
    },
    contains: function (t, i, n, e) {
      if (1 != arguments[N]) return 2 == arguments[N] ? t >= this.x && t <= this.x + this.width && i >= this.y && i <= this.y + this[Wt] : bB(this.x, this.y, this[Yt], this[Wt], t, i, n || 0, e || 0);
      if (a == typeof t && Ht in t && Vt in t) return this.contains(t.x, t.y, t.width, t[Wt]);
      throw {
        message: jt
      }
    },
    intersectsPoint: function (t, i, n) {
      return !(this.width <= 0 && this[Wt] <= 0) && (n ? this[Xt](t - n, i - n, 2 * n, 2 * n) : t >= this.x && t <= this.x + this[Yt] && i >= this.y && i <= this.y + this[Wt])
    },
    intersectsRect: function (t, i, n, e) {
      return dB(this.x, this.y, this.width, this[Wt], t, i, n, e)
    },
    intersects: function (t, i) {
      return WN(t.width) ? this.intersectsRect(t.x, t.y, t[Yt], t[Wt]) : this[Zt](t, i)
    },
    intersection: function (t, i, n, e) {
      var s = this.x,
        h = this.y,
        r = s,
        a = h,
        o = t,
        f = i;
      return s < t && (s = t), h < i && (h = i), (o += n) < (r += this[Yt]) && (r = o), (f += e) < (a += this[Wt]) && (a = f), a -= h, (r -= s) < 0 || a < 0 ? null : new yB(s, h, r, a)
    },
    addPoint: function (t) {
      this.add(t.x, t.y)
    },
    add: function (t, i) {
      if (WN(t.width)) return this.addRect(t.x, t.y, t[Yt], t[Wt]);
      if (WN(t.x) && (i = t.y, t = t.x), this.width < 0 || this[Wt] < 0) return this.x = t, this.y = i, void(this.width = this.height = 0);
      var n = this.x,
        e = this.y,
        s = this[Yt],
        h = this[Wt];
      s += n, h += e, t < n && (n = t), i < e && (e = i), s < t && (s = t), h < i && (h = i), h -= e, (s -= n) > Number[zt] && (s = Number.MAX_VALUE), h > Number.MAX_VALUE && (h = Number[zt]), this.set(n, e, s, h)
    },
    addRect: function (t, i, n, e) {
      var s = this[Yt],
        h = this[Wt];
      (s < 0 || h < 0) && this.set(t, i, n, e);
      var r = n,
        a = e;
      if (!(r < 0 || a < 0)) {
        var o = this.x,
          f = this.y;
        s += o, h += f, t < o && (o = t), i < f && (f = i), s < (r += t) && (s = r), h < (a += i) && (h = a), h -= f, (s -= o) > Number[zt] && (s = Number[zt]), h > Number.MAX_VALUE && (h = Number[zt]), this.set(o, f, s, h)
      }
    },
    shrink: function (t, i, n, e) {
      return WN(t) ? e = 1 == arguments.length ? i = n = t || 0 : 2 == arguments[N] ? (n = t || 0, i || 0) : (t = t || 0, i = i || 0, n = n || 0, e || 0) : (i = t[Kt] || 0, n = t[Ft] || 0, e = t[Bt] || 0, t = t.top || 0), this.x += i, this.y += t, this[Yt] -= i + e, this[Wt] -= t + n, this
    },
    grow: function (t, i, n, e) {
      return WN(t) ? e = 1 == arguments[N] ? i = n = t || 0 : 2 == arguments[N] ? (n = t || 0, i || 0) : (t = t || 0, i = i || 0, n = n || 0, e || 0) : (i = t[Kt] || 0, n = t[Ft] || 0, e = t[Bt] || 0, t = t.top || 0), this.x -= i, this.y -= t, this[Yt] += i + e, this[Wt] += t + n, this
    },
    scale: function (t) {
      return this.x *= t, this.y *= t, this[Yt] *= t, this[Wt] *= t, this
    },
    isEmpty: function () {
      return this[Yt] <= 0 && this[Wt] <= 0
    },
    toString: function () {
      return this.x + Jt + this.y + Jt + this.width + Jt + this[Wt]
    },
    union: function (t) {
      var i = this[Yt],
        n = this[Wt];
      if (i < 0 || n < 0) return new yB(t.x, t.y, t.width, t[Wt]);
      var e = t[Yt],
        s = t.height;
      if (e < 0 || s < 0) return new yB(this.x, this.y, this[Yt], this[Wt]);
      var h = this.x,
        r = this.y;
      i += h, n += r;
      var a = t.x,
        o = t.y;
      return a < h && (h = a), o < r && (r = o), i < (e += a) && (i = e), n < (s += o) && (n = s), n -= r, (i -= h) > Number[zt] && (i = Number[zt]), n > Number[zt] && (n = Number[zt]), new yB(h, r, i, n)
    },
    clear: function () {
      this.set(0, 0, -1, -1)
    },
    equals: function (t) {
      return t && this.x == t.x && this.y == t.y && this[Yt] == t[Yt] && this[Wt] == t[Wt]
    },
    clone: function (t, i) {
      return new yB(this.x + (t || 0), this.y + (i || 0), this[Yt], this[Wt])
    },
    toArray: function () {
      return [this.x, this.y, this[Yt], this[Wt]]
    },
    getIntersectionPoint: function (t, i, n, e) {
      return _B(this, t, i, n, e)
    }
  }, dN(yB, lB), yB[Qt] = function (t, i) {
    return t == i || t && i && t.x == i.x && t.y == i.y && t[Yt] == i[Yt] && t[Wt] == i[Wt]
  }, qN(yB[_], {
    left: {
      get: function () {
        return this.x
      }
    },
    top: {
      get: function () {
        return this.y
      }
    },
    bottom: {
      get: function () {
        return this.y + this[Wt]
      }
    },
    right: {
      get: function () {
        return this.x + this[Yt]
      }
    },
    cx: {
      get: function () {
        return this.x + this.width / 2
      }
    },
    cy: {
      get: function () {
        return this.y + this.height / 2
      }
    },
    center: {
      get: function () {
        return new fB(this.cx, this.cy)
      }
    }
  }), yB.intersects = dB, yB[qt] = function (t, i, n, e, s, h, r, a) {
    var o = t,
      f = i,
      c = s,
      u = h;
    return t < s && (t = s), i < h && (i = h), (c += r) < (o += n) && (o = c), (u += a) < (f += e) && (f = u), f -= i, (o -= t) < 0 || f < 0 ? null : new yB(t, i, o, f)
  }, yB.intersectsPoint = vB, gB[_] = {
    top: 0,
    bottom: 0,
    left: 0,
    right: 0,
    set: function (t, i, n, e) {
      this.top = t || 0, this[Kt] = i || 0, this[Ft] = n || 0, this[Bt] = e || 0
    },
    clone: function () {
      return new gB(this.top, this[Kt], this[Ft], this[Bt])
    },
    equals: function (t) {
      return t && this.top == t.top && this[Ft] == t.bottom && this[Kt] == t[Kt] && this[Bt] == t.right
    }
  };
  var EB = function (t, i) {
    this[ti] = t, this.verticalPosition = i
  };
  EB[_] = {
    verticalPosition: !1,
    horizontalPosition: !1,
    toString: function () {
      return (this[ti] || "") + (this[ii] || "")
    }
  }, QN(EB.prototype, ni, {
    get: function () {
      return (this.horizontalPosition || "") + (this.verticalPosition || "")
    }
  });
  var xB = ei,
    pB = si,
    TB = hi,
    mB = ri;
  EB[ai] = new EB(xB, TB), EB.LEFT_MIDDLE = new EB(xB, oi), EB[fi] = new EB(xB, mB), EB.CENTER_TOP = new EB(ci, TB), EB[ui] = new EB(ci, oi), EB.CENTER_BOTTOM = new EB(ci, mB), EB.RIGHT_TOP = new EB(pB, TB), EB.RIGHT_MIDDLE = new EB(pB, oi), EB[_i] = new EB(pB, mB);
  var wB = [EB[ai], EB[li], EB.LEFT_BOTTOM, EB[di], EB.CENTER_MIDDLE, EB[vi], EB[bi], EB[yi], EB[_i]];

  function OB(t, i) {
    var n = AB(t, i[Yt], i[Wt]);
    return n.x += i.x || 0, n.y += i.y || 0, n
  }

  function AB(t, i, n) {
    if (!t) return {
      x: 0,
      y: 0
    };
    if (UN(t) && (t = EB[gi](t)), t instanceof EB) {
      var e, s, h = t[ti],
        r = t[ii];
      switch (h) {
        case xB:
          e = 0;
          break;
        case pB:
          e = i;
          break;
        default:
          e = i / 2
      }
      switch (r) {
        case TB:
          s = 0;
          break;
        case mB:
          s = n;
          break;
        default:
          s = n / 2
      }
      return {
        x: e,
        y: s
      }
    }
    if (t.x !== k) return t.byPercent ? {
      x: t.x * i,
      y: t.y * n
    } : {
      x: t.x,
      y: t.y
    };
    throw new Error("Position not be supported - " + t)
  }

  function IB(t, i, n, e, s) {
    this.set(t, i, n, e), this[Ei] = s
  }

  function SB(t, i, n, e) {
    this[pi] = t, this.type = i, this[Ti] = n, this.value = e
  }
  QN(EB, X, {
    get: function () {
      return wB[ZN(wB[N])]
    }
  }), EB[gi] = function (t) {
    for (var i in EB) {
      var n = EB[i];
      if (n && X != i && n instanceof EB && n.toString() == t) return n
    }
    throw new Error("Position not be supported - " + t)
  }, IB.prototype = {
    radius: 0,
    classify: function (t, i, n, e) {
      return t < i ? 0 : t < i + e ? 1 : t < n - e ? 2 : t < n ? 3 : 4
    },
    intersectsRect: function (t, i, n, e) {
      if (!1 === bN(this, IB, Xt, arguments)) return !1;
      var s = this.x,
        h = this.y,
        r = s + this.width,
        a = h + this.height,
        o = 2 * radius,
        f = 2 * radius,
        c = Math.min(this[Yt], Math.abs(o)) / 2,
        u = Math.min(this[Wt], Math.abs(f)) / 2,
        _ = this.classify(t, s, r, c),
        l = this.classify(t + n, s, r, c),
        d = this[xi](i, h, a, u),
        v = this[xi](i + e, h, a, u);
      return 2 == _ || 2 == l || 2 == d || 2 == v || _ < 2 && 2 < l || d < 2 && 2 < v || (t = 1 == l ? t = t + n - (s + c) : t -= r - c, i = 1 == v ? i = i + e - (h + u) : i -= a - u, (t /= c) * t + (i /= u) * i <= 1)
    },
    intersectsPoint: function (t, i) {
      if (!1 === bN(this, IB, Zt, arguments)) return !1;
      var n = this.x,
        e = this.y,
        s = n + this[Yt],
        h = e + this.height;
      if (t < n || i < e || s <= t || h <= i) return !1;
      var r = 2 * radius,
        a = 2 * radius,
        o = Math.min(this[Yt], Math.abs(r)) / 2,
        f = Math.min(this[Wt], Math.abs(a)) / 2;
      return t >= (n += o) && t < (n = s - o) || i >= (e += f) && i < (e = h - f) || (t = (t - n) / o) * t + (i = (i - e) / f) * i <= 1
    },
    clone: function () {
      return new IB(this.x, this.y, this[Yt], this[Wt], this[Ei])
    }
  }, dN(IB, yB), SB.prototype = {
    source: null,
    type: null,
    kind: null,
    value: null,
    toString: function () {
      return mi + this[pi] + wi + this[Oi] + Ai + this[Ti]
    }
  };
  var MB = function (t, i, n, e, s) {
    this.source = t, this[Ti] = i, this[Ii] = e, this.value = n, this.propertyType = s
  };

  function kB(t, i, n) {
    this.source = t, this[Ii] = t[Pi], this[Li] = i, this[Di] = n, this.oldValue && (this[Ni] = this[Ii][Bi](t))
  }

  function CB(t, i) {
    this[pi] = t, this.value = i
  }

  function LB(t, i) {
    this[pi] = t, this[Li] = i
  }

  function RB(t, i, n, e) {
    this.source = i, this.oldValue = n, this[Li] = e, this[Pi] = t, this[$i] = i, this.oldIndex = n, this.newIndex = e
  }

  function PB() {}

  function DB(t, i) {
    this[Wi] = t, this[Hi] = i, t instanceof Function ? this.onEvent = t : (this[O] = t[O], this[Ui] = t[Ui]), this.equals = function (t) {
      return t && this[Wi] == t[Wi] && this[Hi] == t[Hi]
    }
  }
  MB.prototype = {
    type: Si,
    propertyType: null,
    toString: function () {
      return mi + this[pi] + wi + this.type + Mi + this.kind + ki + this[Ii] + Ci + this[Li]
    }
  }, dN(MB, SB), QN(MB.prototype, Ri, {
    get: function () {
      return this[Ti]
    },
    set: function (t) {
      this.kind = t
    }
  }), kB[_] = {
    kind: Pi
  }, dN(kB, MB), CB[_].kind = Fi, dN(CB, MB), LB.prototype[Ti] = Gi, dN(LB, MB), RB.prototype[Ti] = Yi, dN(RB, MB), PB[_] = {
    listener: null,
    beforeEvent: function (t) {
      return null == this.listener || !this[Wi][Ui] || this.listener[Ui](t)
    },
    onEvent: function (t) {
      null != this[Wi] && this.listener[O] && this.listener[O](t)
    }
  };
  var NB = function () {
    vN(this, NB, arguments), this.events = {}, this[Vi] = []
  };

  function BB(t, i, n, e, s) {
    this[pi] = t, this[Oi] = zi, this[Ti] = i, this[Ki] = n, this[Ji] = e, this[Ni] = s
  }

  function FB() {
    this.id = ++TN, this._d0 = {}
  }

  function GB() {
    this._kE = [], this._mS = {}, this._1I = new NB
  }
  DB[_] = {
    equals: function (t) {
      return t && this.listener == t[Wi] && this.scope == t.scope
    },
    destroy: function () {
      delete this[Hi], delete this.listener
    }
  }, NB.prototype = {
    listeners: null,
    _oAW: function () {
      return this[Vi] && 0 < this[Vi][N]
    },
    _7C: function (t, i) {
      return t instanceof NB ? t : new DB(t, i)
    },
    _o9C: function (t, i) {
      if (t instanceof NB) return this[Vi].indexOf(t);
      for (var n = this[Vi], e = 0, s = n.length; e < s; e++) {
        var h = n[e];
        if (h[Wi] == t && h[Hi] == i) return e
      }
      return -1
    },
    contains: function (t, i) {
      return 0 <= this._o9C(t, i)
    },
    addListener: function (t, i) {
      if (this.contains(t, i)) return !1;
      this[Vi][M](this._7C(t, i))
    },
    removeListener: function (t, i, n) {
      var e = this[ji](t, i);
      0 <= e && this[Vi][m](e, 1)
    },
    on: function (t, i) {
      this[Xi](t, i)
    },
    un: function (t, i, n) {
      this[Zi](t, i, n)
    },
    onEvent: function (i) {
      if (!this[Vi]) return !1;
      aN(this[Vi], function (t) {
        t[O] && (t[Hi] ? t[O].call(t[Hi], i) : t[O](i))
      }, this)
    },
    beforeEvent: function (i) {
      return !this[Vi] || aN(this[Vi], function (t) {
        return !t.beforeEvent || (t[Hi] ? t[Ui][p](t[Hi], i) : t[Ui](i))
      }, this)
    },
    _eM: function (t) {
      return !1 !== this[Ui](t) && (this[O](t), !0)
    },
    clear: function () {
      this[Vi] = []
    },
    destroy: function () {
      this.clear()
    }
  }, dN(NB, PB), BB[_] = {
    index: -1,
    oldIndex: -1,
    toString: function () {
      return mi + this[pi] + wi + this[Oi] + Ai + this[Ti] + Qi + this.data + qi + this[Ji] + tn + this.oldIndex
    }
  }, dN(BB, SB), BB[nn] = en, BB.KIND_REMOVE = o, BB[sn] = St, BB[hn] = rn, FB[_] = {
    _d0: null,
    id: null,
    get: function (t) {
      return this._d0[t]
    },
    set: function (t, i) {
      var n = this.get(t);
      if (n === i) return !1;
      var e = new MB(this, t, i, n);
      return e[an] = OF.PROPERTY_TYPE_CLIENT, this[on](t, i, e, this._d0)
    },
    _oAD: function (t, i, n, e) {
      return !1 !== this[Ui](n) && (e = e || this._d0, i === k ? delete e[t] : e[t] = i, this.onEvent(n), !0)
    },
    remove: function (t) {
      this.set(t, null)
    },
    valueOf: function () {
      return this.id
    },
    toString: function () {
      return this.id
    },
    _eW: function (t, i) {
      if (i === k && (i = -1), this == t || t == this._kK) return !1;
      if (t && this == t._kK && !t._eW(null)) return !1;
      var n, e, s = new kB(this, t, i);
      if (!this[Ui](s)) return !1;
      var h, r, a, o, f = this._kK;
      return !(t && (n = new CB(t, this), !t[Ui](n)) || null != f && (e = new LB(f, this), !f.beforeEvent(e)) || (null != (this._kK = t) && (r = i, (h = t)[y].add(this, r), h[fn](this, r)), null != f && (o = this, (a = f)._gY && (a._gY.remove(o), a[cn](o))), this[O](s), null != t && t[O](n), null != f && f[O](e), this.onParentChanged(f, t), 0))
    },
    addChild: function (t, i) {
      var n = t._eW(this, i);
      return n && this[fn](t, i), n
    },
    removeChild: function (t) {
      if (!this._gY || !this._gY.contains(t)) return !1;
      var i = t._eW(null);
      return this[cn](t), i
    },
    toChildren: function () {
      return this._gY ? this._gY[un]() : null
    },
    clearChildren: function () {
      if (this._gY && this._gY.length) {
        var t = this.toChildren();
        aN(t, function (t) {
          t._eW(null)
        }, this), this.onChildrenClear(t)
      }
    },
    forEachChild: function (t, i) {
      return !!this[T]() && this._gY.forEach(t, i)
    },
    onChildAdd: function (t, i) {},
    onChildRemove: function (t) {},
    onChildrenClear: function (t) {},
    onParentChanged: function (t, i) {},
    getChildIndex: function (t) {
      return this._gY && this._gY[N] ? this._gY[b](t) : -1
    },
    setChildIndex: function (t, i) {
      if (!this._gY || !this._gY[N]) return !1;
      var n = this._gY[b](t);
      if (n < 0 || n == i) return !1;
      var e = new RB(this, t, n, i);
      return !1 !== this[Ui](e) && (this._gY.remove(t) && this._gY.add(t, i), this[O](e), !0)
    },
    hasChildren: function () {
      return this._gY && 0 < this._gY[N]
    },
    getChildAt: function (t) {
      return null == this._gY ? null : this._gY._kE[t]
    },
    isDescendantOf: function (t) {
      if (!t[T]()) return !1;
      for (var i = this[Pi]; null != i;) {
        if (t == i) return !0;
        i = i[Pi]
      }
      return !1
    },
    firePropertyChangeEvent: function (t, i, n, e) {
      this[O](new MB(this, t, i, n, e))
    }
  }, dN(FB, PB), qN(FB[_], {
    childrenCount: {
      get: function () {
        return this._gY ? this._gY.length : 0
      }
    },
    children: {
      get: function () {
        return this._gY || (this._gY = new hB), this._gY
      }
    },
    parent: {
      get: function () {
        return this._kK
      },
      set: function (t) {
        this._eW(t, -1)
      }
    },
    properties: {
      get: function () {
        return this._d0
      },
      set: function (t) {
        this._d0 != t && (this._d0 = t)
      }
    }
  }), GB[_] = {
    beforeEvent: function (t) {
      return null == this._1I || !this._1I[Ui] || this._1I.beforeEvent(t)
    },
    onEvent: function (t) {
      this._1I instanceof Function ? this._1I(t) : null != this._1I && this._1I[O] && this._1I.onEvent(t)
    },
    _1I: null,
    setIndex: function (t, i) {
      if (!this.contains(t)) throw new Error(wt + t[_n]() + Ot);
      var n = this[b](t);
      if (n == i) return !1;
      var e = new BB(this, BB[hn], t, i, n);
      return !1 !== this.beforeEvent(e) && (this._kE.splice(n, 1), this._kE[m](i, 0, t), this[O](e), !0)
    },
    _gW: function (t, i) {
      if (0 == t[N]) return !1;
      var n = !1,
        e = 0 <= i,
        s = new BB(this, BB.KIND_ADD, t, i);
      if (!1 === this[Ui](s)) return !1;
      for (var h = [], r = 0, a = (t = t._kE || t)[N]; r < a; r++) {
        var o = t[r];
        null !== o && o !== k && this._lT(o, i, !0) && (h[M](o), n = !0, e && i++)
      }
      return s[Ki] = h, this[O](s), n
    },
    _lT: function (t, i, n) {
      if (!1 === this[ln](t)) return !1;
      if (n) return bN(this, GB, dn, arguments);
      var e = new BB(this, BB[nn], t, i);
      return !1 !== this[Ui](e) && !!bN(this, GB, dn, arguments) && (this._lR(t, e), t)
    },
    _lR: function (t, i) {
      this[O](i)
    },
    _oAF: function (t) {
      if (0 == t[N]) return !1;
      var i = new BB(this, BB[vn], t);
      if (!1 === this[Ui](i)) return !1;
      for (var n = [], e = !1, s = 0, h = (t = t._kE || t)[N]; s < h; s++) {
        var r = t[s];
        if (null !== r && r !== k) {
          var a = r.id || r;
          r.id === k && (r = null), this._gS(a, r, !0) && (n[M](r), e = !0)
        }
      }
      return i[Ki] = n, this[O](i), e
    },
    _gS: function (t, i, n) {
      if (n) return bN(this, GB, bn, arguments);
      var e = new BB(this, BB[vn], i);
      return !1 !== this[Ui](e) && !!bN(this, GB, bn, arguments) && (this[O](e), !0)
    },
    clear: function () {
      if (this[yn]()) return !1;
      var t = new BB(this, BB[sn], this[un]());
      return !1 !== this.beforeEvent(t) && !!bN(this, GB, St) && (this[O](t), !0)
    },
    accept: function (t) {
      return !this.filter || !1 !== this[gn](t)
    }
  }, dN(GB, hB), QN(GB.prototype, En, {
    get: function () {
      return this._1I
    }
  });
  var $B = function () {
    vN(this, $B, arguments), this[xn] = new NB, this[pn] = new YB(this), this[pn]._1I = this[xn], this[Tn] = new NB, this[Tn][Xi]({
      beforeEvent: this[mn],
      onEvent: this.onDataPropertyChanged
    }, this), this.parentChangeDispatcher = new NB, this[wn] = new NB, this.$roots = new hB;
    var s = this;
    this[On][An] = function (t, i) {
      if (!s[On].contains(t)) throw new Error(wt + t.id + Ot);
      var n = s[On]._kE[b](t);
      if (n == i) return !1;
      s.$roots._kE[m](n, 1), s[On]._kE[m](i, 0, t), s[In] = !0;
      var e = new RB(s, t, n, i);
      return s._21(e), !0
    }
  };
  $B.prototype = {
    selectionModel: null,
    selectionChangeDispatcher: null,
    dataChangeDispatcher: null,
    parentChangeDispatcher: null,
    roots: null,
    _lR: function (t, i) {
      t.listener = this[Tn], t[Pi] || this.$roots.add(t), this.onEvent(i)
    },
    _gS: function (t, i) {
      if (bN(this, $B, bn, arguments)) {
        if (i instanceof xY) i.disconnect();
        else if (i instanceof wY) {
          var n = i[Sn]();
          this[o](n)
        }
        var e = i[Pi];
        return null == e ? this[On].remove(i) : (e.removeChild(i), e[Mn] = !0), i.hasChildren() && this[o](i[kn]()), !(i[Wi] = null)
      }
      return !1
    },
    _5R: function (t) {
      var i = t[pi];
      this.contains(i) && (null == i.parent ? this[On].add(i) : null == t[Ii] && this.$roots[o](i), this[Cn][O](t))
    },
    _21: function (t) {
      this[wn][O](t)
    },
    beforeDataPropertyChange: function (t) {
      return !(t instanceof kB) || this[Cn][Ui](t)
    },
    onDataPropertyChanged: function (t) {
      if (t instanceof kB) return this[In] = !0, t[pi]._d7IndexFlag = !0, void this._5R(t);
      t instanceof RB && (this._d7IndexFlag = !0, t[pi][In] = !0, this._21(t))
    },
    toRoots: function () {
      return this[On][un]()
    },
    _gT: function (t) {
      var i, n = t._kK,
        e = (i = n ? n._gY : this[On])[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      return 0 == e ? n : i[Tt](e - 1)
    },
    _gU: function (t) {
      var i, n = t._kK,
        e = (i = n ? n._gY : this[On])[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      return e == i.length - 1 ? n ? this._gU(n) : null : i[Tt](e + 1)
    },
    forEachByDepthFirst: function (t, i, n) {
      return !!this[On][N] && eN(this.$roots, t, i, n)
    },
    forEachByDepthFirstReverse: function (t, i, n) {
      return !!this.$roots[N] && sN(this.$roots, t, i, n)
    },
    forEachByBreadthFirst: function (t, i) {
      return !!this.$roots[N] && hN(this.$roots, t, i)
    },
    forEachByBreadthFirstReverse: function (t, i) {
      return !!this[On][N] && function (t, i, n) {
        for (var e, s = (t._kE || t)[C](0); s[N];) {
          if (e = s[s.length - 1], s = s[m](0, s[N] - 1), !1 === i.call(n, e)) return !1;
          if (e[T]()) {
            var h = e.children;
            h = h._kE || h, s = s[B](h)
          }
        }
        return !0
      }(this.$roots, t, i)
    },
    clear: function () {
      return !!bN(this, $B, St) && (this[On][St](), this[Rn][St](), !0)
    }
  }, dN($B, GB), qN($B.prototype, {
    selectionModel: {
      get: function () {
        return this[pn]
      }
    },
    roots: {
      get: function () {
        return this[On]
      }
    }
  });
  var YB = function (t) {
    vN(this, YB), this.box = t, this[Pn] = {
      onEvent: function (t) {
        BB.KIND_REMOVE == t.kind ? null != t[Ki] ? this[o](t[Ki]) : null != t[Dn] && this[o](t[Dn]) : BB[sn] == t[Ti] && this[St]()
      }
    }, this.box[En].addListener(this[Pn], this)
  };

  function WB(t) {
    return t.replace(/^-ms-/, Nn).replace(/-([\da-z])/gi, function (t, i) {
      return i[Bn]()
    })
  }
  YB.prototype = {
    box: null,
    isSelected: function (t) {
      return this.containsById(t.id || t)
    },
    select: function (t) {
      return this.add(t)
    },
    unselect: function (t) {
      return this[o](t)
    },
    reverseSelect: function (t) {
      return this[Fn](t) ? this.remove(t) : this.add(t)
    },
    accept: function (t) {
      return this.box[Fn](t)
    }
  }, dN(YB, GB);
  var UB = null,
    HB = null,
    VB = function () {
      if (!x[Gn]) return function (t) {
        return t
      };
      var n = x[Gn]($n)[Yn],
        e = {};
      return function (t) {
        if (e[t]) return e[t];
        var i = WB(t);
        return n[i] !== k || HB && n[i = WB(HB + i)] !== k ? e[t] = i : t
      }
    }();

  function jB(t, i) {
    var n, e, s = t[Yn];
    if (!s) return !1;
    for (n in i) i.hasOwnProperty(n) && (e = VB(n)) && (s[e] = i[n]);
    return t
  }

  function XB(t, i, n) {
    (i = VB(i)) && (t[Yn][i] = n)
  }

  function ZB(t, i) {
    if (!UB) return !1;
    i && !UN(i) && (i = function (t) {
      var i, n, e = "";
      for (i in t) t.hasOwnProperty(i) && (n = VB(i)) && (e += n.replace(/[A-Z]/g, function (t) {
        return Wn + t.toLowerCase()
      })[Un](/^ms-/, Hn) + Vn + t[i] + jn);
      return e ? e[Xn](0, e.length - 1) : e
    }(i)), UB.insertRule ? UB[Zn](t + zn + i + Kn, 0) : UB[Jn] && UB[Jn](t, i, 0)
  }
  var zB = {};

  function KB(t, i) {
    var n = t[Qn];
    return n ? (i = i || t[qn]())[Yt] / n : 1
  }

  function JB(t, i, n, e, s) {
    if (s) {
      var h = function (t) {
        h[oe][p](h.scope, t)
      };
      return h.scope = s, h[oe] = n, t[fe](i, h, e), h
    }
    return t[fe](i, n, e), n
  }! function () {
    if (x[te]) {
      for (var t = x[te], i = "Webkit Moz O ms Khtml" [G]($), n = 0; n < i[N]; n++)
        if (t.style[i[n] + ie] !== k) {
          HB = Wn + i[n].toLowerCase() + Wn;
          break
        } var e, s, h = x[Gn](Yn);
      for (var r in u[ne] || h[ee](x.createTextNode("")), h[Oi] = se, h.id = he, t[ee](h), UB = h[re], zB) {
        var a = zB[r];
        for (var o in e = r, s = "", a) s += VB(o) + Vn + a[o] + ae;
        ZB(e, s)
      }
    }
  }(), sB[ce] = 200, sB[ue] = 800, sB[_e] = !0;
  var QB, qB = L in u,
    tF = qB && /mobile|tablet|ip(ad|hone|od)|android/i [S](navigator[le]);
  if (tF) QB = de;
  else {
    var iF = ve in u ? "mousewheel" : be;
    QB = ye + iF, qB && (QB += ge)
  }

  function nF(t) {
    return u[Ee] && t instanceof u[Ee]
  }

  function eF() {
    return sB.DOUBLE_CLICK_INTERVAL_TIME
  }

  function XN(t) {
    VN(t), jN(t)
  }

  function sF(t) {
    _F[pe] && _F._oBurrentItem._3I(t)
  }

  function hF(t) {
    _F._oBurrentItem && (_F[pe]._5F(t), rF(null))
  }
  QB = QB[G](/[\s,]+/);

  function rF(t) {
    _F[pe] != t && (_F._oBurrentItem && (_F[pe][Te] = !1), _F[pe] = t)
  }
  var VN = function (t) {
      t[s] ? t[s]() : t[H] = !1
    },
    jN = function (t) {
      t.stopPropagation && t.stopPropagation(), t[j] = !0
    };

  function aF(t, i) {
    var n, e;
    e = t[me] ? (n = t.cx, t.cy) : (n = t[we], t[Oe]);
    var s = KB(i);
    return s && 1 !== s && (n /= s, e /= s), {
      timeStamp: t[Ae],
      x: n,
      y: e
    }
  }

  function oF(t, i, n) {
    this._mU = t, this[Ie] = n, this._handler = i, this[Se] = new dF, this._iU()
  }
  oF[_] = {
    _iU: function () {
      var i, n;
      this[Me] || (this[Me] = function (t) {
        this._k3(t)
      }.bind(this), i = this._mU, n = this.__k3, QB.forEach(function (t) {
        i.addEventListener(t, n, !1)
      }), BN || _F[ke] || (_F[ke] = !0, u.addEventListener(Ce, sF, !0), u[fe](Le, hF, !0)))
    },
    _eF: function () {
      var i, n;
      this[Me] && (i = this._mU, n = this.__k3, QB.forEach(function (t) {
        i.removeEventListener(t, n, !1)
      }))
    },
    _k3: function (t) {
      var i = (t = this._gD(t))[Oi];
      !1 === this[Re](t, i) && this._iV(t, Pe + i)
    },
    _1H: function () {
      this.__longPressTimer && (clearTimeout(this[De]), this.__longPressTimer = null)
    },
    _5D: function (t) {
      this.__onLongPressFunction || (this[Ne] = function () {
        this._lZEvent && (this[Be] = !0, this[Fe].button ? this._iV(this[Fe], Ge) : this._iV(this._lZEvent, $e))
      } [Ye](this)), this._1H(), this[De] = setTimeout(this[Ne], sB[ue])
    },
    _6U: function (t) {
      for (var i, n, e = 0, s = 0, h = t[me].length, r = 0; r < h;) {
        var a = t[me][r++],
          o = a.clientX,
          f = a.clientY;
        if (2 == r) {
          var c = n[0] - o,
            u = n[1] - f;
          i = Math[Gt](c * c + u * u)
        }
        n = [o, f], e += o, s += f
      }
      t.cx = e / h, t.cy = s / h, t[We] = {
        x: t.cx,
        y: t.cy,
        clientX: t.cx,
        clientY: t.cy
      }, t[Rt] = i
    },
    _3G: function (t) {
      this._dragPoints[St](), this._o92 = aF(t, this._mU)
    },
    _4B: function (t, i) {
      switch (i) {
        case "touchstart":
          jN(t), this._6U(t), this._3G(t);
          var n = t[me].length;
          this._lZEvent || (this[Fe] = t, this._iW(t), this.__oBancelClick = !1, this._5D(t)), 1 == n && (this[Ue] = null), 2 <= n && !this[Ue] && (this[Ue] = {
            cx: t.cx,
            cy: t.cy,
            distance: t.distance
          });
          break;
        case "touchmove":
          if (XN(t), this._6U(t), 2 <= (n = t.touches[N]) && this.__lZMulTouchEvent) {
            var e = this[Ue][Rt];
            t._scale = t[Rt] / e, this[Ue][He] ? t[Ve] = t._scale / this[Ue][He] : t[Ve] = t[je], this[Ue][He] = t[je], this[Xe] || (this[Xe] = !0, this._iV(t, Ze))
          }
          this[Te] || (this[Te] = !0, this._eI(t)), this._k4(t), this[Xe] && this._iV(t, ze);
          break;
        case "touchend":
          XN(t), (n = t.touches[N]) && (this._6U(t), this._3G(t)), n <= 1 && (this.__pinching && (this[Xe] = !1, this._iV(t, Ke)), this.__lZMulTouchEvent = null), 0 == n && (this[Te] ? (this._iX(t), this[Te] = !1) : t[Ae] - this._lZEvent[Ae] < .8 * eF() && this._gF(this[Fe]), this._eH(t));
          break;
        case "touchcancel":
          this[Te] = !1, this[Xe] = !1, this[Ue] = null
      }
      return !1
    },
    _oA3: function (t, i) {
      if (nF(t)) return this._4B(t, i);
      if (Je == i) jN(t), rF(this), this._o92 = aF(t, this._mU), this._lZEvent || (this[Fe] = t, this._iW(t)), this.__oBancelClick = !1, this._5D(t);
      else if (Le == i) rF(), this._eH(t);
      else if (Qe == i) {
        if (this.__oBancelClick) return !0;
        if (this._9I()) return this._gF(t), !0
      } else if (qe == i) {
        if (this._9I()) return !0
      } else {
        if (ts == i) return this._iV(t, is), this[Fe] && ((e = t)[xe] || !1 === e[H]) && rF(this), !0;
        if (i == iF) {
          var n = t.wheelDelta;
          if (n !== k ? n /= 120 : n = -t[ns], !n) return;
          return t.delta = n, this._iV(t, ve)
        }
      }
      var e;
      return !1
    },
    _iV: function (t, i) {
      if (this[es]) {
        var n = this[es];
        if (i = i || t.type, n instanceof Function) return n(t, i);
        if (!(n.accept instanceof Function && !1 === n[ln](i, t))) return n.onevent instanceof Function && n[ss](i, t, this[Ie] || this._mU), n[i] instanceof Function ? n[i][p](n, t, this[Ie] || this._mU) : void 0
      }
    },
    _gD: function (t) {
      return t
    },
    _5F: function (t) {
      this.__dragging && (XN(t), this[Te] = !1, t = this._gD(t), this._iX(t), this._eH(t), this._iV(t, hs))
    },
    _3H: 4,
    _3I: function (t) {
      if (this[Fe]) {
        if (XN(t), !this.__dragging) {
          var i = this._lZEvent[rs] - t[rs],
            n = this._lZEvent[as] - t[as];
          if (i * i + n * n < this._3H) return;
          this[Te] = !0, this._eI(t)
        }
        this._k4(this._gD(t))
      }
    },
    _9I: function () {
      return sB.DELAY_CLICK
    },
    _gF: function (t) {
      if (!this[Be]) {
        var i = eF();
        this.__oBlickTimer ? this[os] || (clearTimeout(this[fs]), this[fs] = null, this._iV(t, cs), this.__dblclicked = !0) : (this[os] = !1, this[fs] = setTimeout(function (t, i) {
          this[fs] = null, this[os] || this._iV(t, us)
        }.bind(this, t, i), i))
      }
    },
    _iW: function (t) {
      t[_s] ? this._iV(t, ls) : this._iV(t, ds)
    },
    _eH: function (t) {
      this[Fe] && (this._1H(), t[_s] ? this._iV(t, vs) : this._iV(t, bs), this[Fe] = null, this[ys] = null)
    },
    _6V: function (t) {
      var i = this[ys];
      this[ys] = aF(t, this._mU), this[Se].add(i, this._o92, t)
    },
    _eI: function (t) {
      this[Be] = !0, this._1H(), this[Fe][_s] ? this._iV(this[Fe], gs) : this._iV(this[Fe], Es)
    },
    _k4: function (t) {
      this._6V(t), this[Fe].button ? this._iV(t, xs) : this._iV(t, ps)
    },
    _iX: function (t) {
      if (t.timeStamp - this[ys][Ae] < 100) {
        var i = this[Se][Ts]();
        i && (t.vx = i.x, t.vy = i.y)
      }
      this[Fe][_s] ? this._iV(t, ms) : this._iV(t, ws), this[Se][St]()
    },
    _iZ: function (t) {
      this._oA5()
    },
    _oA5: function () {
      _F[pe] == this && delete _F._oBurrentItem, this._1H(), delete this[ys], this[Fe] && (delete this[Fe][Os], delete this[Fe][As], delete this._lZEvent)
    }
  };
  var fF, cF, uF, _F = EN(function (t) {
    this._lW = t, oF.apply(this, [t.canvasPanel, null, t])
  }, {
    super: oF,
    _jK: function (t) {
      return this._lW[Is](t)
    },
    _lY: function (t) {
      return this._lW[Ss](t)
    },
    _gD: function (t) {
      return (t instanceof MouseEvent || u.TouchEvent && t instanceof u.TouchEvent) && (t[Os] = this._jK.bind(this, t), t.getUI = this._lY.bind(this, t)), t
    },
    _4P: function (i) {
      this._4Q(function (t) {
        t.onElementRemoved instanceof Function && t[Ms](i, this._lW)
      })
    },
    _7E: function () {
      this._4Q(function (t) {
        t.onClear instanceof Function && t[ks](this._lW)
      })
    },
    _iZ: function (t) {
      this._1R && this._2E(this._1R, t), this._$o && this._2E(this._$o, t), this[Cs]()
    },
    _lW: null,
    _1R: null,
    _$o: null,
    _7G: function (t) {
      if (this._1R == t) return !1;
      this._1R && this._1R[N] && this._2E(this._1R), this._1R = t
    },
    _9: function (t) {
      this._$o || (this._$o = []), this._$o[M](t)
    },
    _5: function (t) {
      this._$o && 0 != this._$o[N] && _N(this._$o, t)
    },
    _iV: function (t, i, n) {
      this._lW[i] instanceof Function && this._lW[i].call(this._lW, t, n), this._1R && this._h9(t, i, this._1R, n), this._$o && this._h9(t, i, this._$o, n)
    },
    _4Q: function (t) {
      this._1R && aN(this._1R, t, this), this._$o && aN(this._$o, t, this)
    },
    _h9: function (t, i, n, e) {
      if (HN(n))
        for (var s = 0; s < n[N]; s++) {
          var h = n[s];
          this._o9D(t, i, h, e)
        } else this[Ls](t, i, n, e)
    },
    _o9D: function (t, i, n, e) {
      if (!(n[ln] instanceof Function && !1 === n.accept(i, t, this._lW, e))) {
        n.onevent instanceof Function && n[ss](i, t, this._lW, e);
        var s = n[i];
        s instanceof Function && s.call(n, t, this._lW, e)
      }
    },
    _2V: function (t) {
      t[Rs] instanceof Function && t.destroy.call(t, this._lW)
    },
    _2E: function (t, i) {
      if (HN(t))
        for (var n = 0; n < t[N]; n++) {
          var e = t[n];
          e && this._2V(e, i)
        } else this._2V(t, i)
    }
  });

  function lF(t) {
    return RN && t[Ps] || !RN && t[Ds]
  }

  function dF() {
    this[Ns] = []
  }

  function vF(t) {
    this._kU = t
  }
  dF[_] = {
    limitCount: 10,
    points: null,
    add: function (t, i, n) {
      0 == this[Ns][N] && (this._lZX = t.x, this[Bs] = t.y);
      var e = i[Ae] - t[Ae] || 1;
      n[Fs] = e;
      var s = i.x - t.x,
        h = i.y - t.y;
      n.dx = s, n.dy = h, n[Gs] = this[$s], n[Ys] = this._lZY, n[Ws] = i.x - this._lZX, n[Us] = i.y - this[Bs], this[Ns][m](0, 0, {
        interval: e,
        dx: s,
        dy: h
      }), this[Ns].length > this.limitCount && this[Ns].pop()
    },
    getCurrentSpeed: function () {
      if (!this.points.length) return null;
      for (var t = 0, i = 0, n = 0, e = 0, s = this[Ns].length; e < s; e++) {
        var h = this.points[e],
          r = h[Fs];
        if (150 < r) {
          t = 0;
          break
        }
        if (t += r, i += h.dx, n += h.dy, 300 < t) break
      }
      return 0 == t || 0 == i && 0 == n ? null : {
        x: i / t,
        y: n / t
      }
    },
    clear: function () {
      this[Ns] = []
    }
  }, uF = SN ? (fF = Hs, cF = Vs, js) : MN ? (fF = Xs, cF = Zs, zs) : (cF = fF = Ks, Js);
  var bF = Math.PI,
    yF = Math.pow,
    gF = Math.sin,
    EF = 1.70158,
    xF = {
      swing: function (t) {
        return -Math.cos(t * bF) / 2 + .5
      },
      easeNone: function (t) {
        return t
      },
      easeIn: function (t) {
        return t * t
      },
      easeOut: function (t) {
        return (2 - t) * t
      },
      easeBoth: function (t) {
        return (t *= 2) < 1 ? .5 * t * t : .5 * (1 - --t * (t - 2))
      },
      easeInStrong: function (t) {
        return t * t * t * t
      },
      easeOutStrong: function (t) {
        return 1 - --t * t * t * t
      },
      easeBothStrong: function (t) {
        return (t *= 2) < 1 ? .5 * t * t * t * t : .5 * (2 - (t -= 2) * t * t * t)
      },
      elasticIn: function (t) {
        return 0 === t || 1 === t ? t : -yF(2, 10 * --t) * gF(2 * bF * (t - .075) / .3)
      },
      elasticOut: function (t) {
        return 0 === t || 1 === t ? t : yF(2, -10 * t) * gF(2 * bF * (t - .075) / .3) + 1
      },
      elasticBoth: function (t) {
        return 0 === t || 2 == (t *= 2) ? t : t < 1 ? yF(2, 10 * --t) * gF(2 * bF * (t - .1125) / .45) * -.5 : yF(2, -10 * --t) * gF(2 * bF * (t - .1125) / .45) * .5 + 1
      },
      backIn: function (t) {
        return 1 === t && (t -= .001), t * t * ((EF + 1) * t - EF)
      },
      backOut: function (t) {
        return --t * t * ((EF + 1) * t + EF) + 1
      },
      backBoth: function (t) {
        return (t *= 2) < 1 ? t * t * ((1 + (EF *= 1.525)) * t - EF) * .5 : .5 * ((t -= 2) * t * ((1 + (EF *= 1.525)) * t + EF) + 2)
      },
      bounceIn: function (t) {
        return 1 - xF[Qs](1 - t)
      },
      bounceOut: function (t) {
        var i = 7.5625;
        return t < 1 / 2.75 ? i * t * t : t < 2 / 2.75 ? i * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? i * (t -= 2.25 / 2.75) * t + .9375 : i * (t -= 2.625 / 2.75) * t + .984375
      },
      bounceBoth: function (t) {
        return t < .5 ? .5 * xF[qs](2 * t) : .5 * xF.bounceOut(2 * t - 1) + .5
      }
    };

  function pF(t, i, n, e) {
    this._onStep = t, this[Ie] = i || this, this._3W = e, n && 0 < n && (this._jL = n)
  }
  vF[_] = {
    _kU: null,
    _8X: function () {
      this[th] instanceof Function && (this._oBallback(), this[th] = null)
    },
    _lZ: function (t) {
      var e = Date.now();
      this._n3(), this[th] = t, this[ih] = requestAnimationFrame(function t() {
        var i = Date.now(),
          n = i - e;
        !n || this._kU && !1 !== this._kU(n) ? (e = i, this[ih] = requestAnimationFrame(t[Ye](this))) : this._n3()
      } [Ye](this))
    },
    _7I: function () {},
    _n3: function () {
      if (!this._requestID) return !1;
      this._7I(), this._8X(), u[ot](this[ih]), delete this[ih]
    },
    _f4: function () {
      return null != this._requestID
    }
  }, pF[_] = {
    _jL: 1e3,
    _3W: null,
    _f6: 0,
    _n3: function () {
      return this._f6 = 0, this._dH = 0, bN(this, pF, nh)
    },
    _dH: 0,
    _kU: function (t) {
      if (this._f6 += t, this._f6 >= this._jL) return this[eh][p](this._scope, 1, (1 - this._dH) * this._jL, t, this._jL), !1;
      var i = this._f6 / this._jL;
      if (this._3W && (i = this._3W(i)), !1 === this[eh].call(this[Ie], i, (i - this._dH) * this._jL, t, this._jL)) return !1;
      this._dH = i
    }
  }, dN(pF, vF);

  function TF(t) {
    eB(t)
  }

  function mF(i, n, e, t, s) {
    !1 !== e && !1 !== t || (s = !1);
    try {
      var h, r = new XMLHttpRequest,
        a = encodeURI(i);
      !1 !== s && (h = 0 < a.indexOf(sh) ? "&" : sh, a += h + hh + Date.now()), r.open(rh, a), r.onreadystatechange = function (t) {
        4 == r[ah] && (r[oh] && 200 != r[oh] ? (e || TF)(wt + i + fh) : n && n(r))
      }, r[ch](t)
    } catch (t) {
      (e || TF)(wt + i + fh, t)
    }
  }
  var wF = {
    version: uh,
    extend: dN,
    doSuperConstructor: vN,
    doSuper: bN,
    createFunction: function (t, i) {
      return i.bind(t)
    },
    setClass: GN,
    appendClass: $N,
    removeClass: YN,
    forEach: aN,
    forEachReverse: fN,
    isNumber: WN,
    isString: UN,
    isBoolean: function (t) {
      return t !== k && (t instanceof Boolean || _h == typeof t)
    },
    isArray: HN,
    eventPreventDefault: VN,
    eventStopPropagation: jN,
    stopEvent: XN,
    callLater: function (t, i, n) {
      return i instanceof Object ? t = t[Ye](i) : i && !n && (n = parseInt(i)), i && !n && (n = parseInt(i)), n ? setTimeout(t, n) : setTimeout(t)
    },
    nextFrame: function (t, i) {
      return i && (t = t.bind(i)), u.requestAnimationFrame(t)
    },
    forEachChild: iN,
    forEachByDepthFirst: eN,
    forEachByDepthFirstReverse: sN,
    forEachByBreadthFirst: hN,
    randomInt: ZN,
    randomBool: function () {
      return .5 <= Math.random()
    },
    randomColor: function (t) {
      if (t && 0 < t && t < 1) {
        var i = Math.floor(16777215 * Math[X]());
        return K + (i >> 16 & 255) + J + (i >> 8 & 255) + J + (255 & i) + J + t[lh](2) + Q
      }
      return JN(Math.floor(16777215 * Math[X]()))
    },
    addEventListener: JB,
    getFirstElementChildByTagName: function (t, i) {
      i = i.toUpperCase();
      for (var n = ON ? t[dh] : t[vh]; n && (1 != n.nodeType || n[bh] && n[bh][Bn]() != i);) n = ON ? n.nextSibling : n.nextElementSibling;
      return n && 1 == n.nodeType && n.tagName && n.tagName[Bn]() == i ? n : null
    }
  };
  wF[yh] = BN, wF[gh] = PN, wF[Zt] = vB, wF.containsRect = bB, wF[Eh] = yB, wF[xh] = lB, wF[ph] = fB, wF[Th] = gB, wF[mh] = SB, wF[wh] = MB, wF[Oh] = BB, wF[Ah] = PB, wF[Ih] = NB, wF[Sh] = EB, wF.Data = FB, wF[Mh] = YB, wF[kh] = $B, wF.IListener = {
    onEvent: function (t) {},
    beforeEvent: function (t) {}
  }, wF[Ch] = mF, wF.loadXML = function (n, e, s, t, i) {
    mF(n, function (t) {
      if (e) {
        var i = t[Lh];
        if (!i) return void(s || TF)(wt + n + Rh);
        e(i)
      }
    }, s, t, i)
  }, wF[Ph] = function (e, s, h, t, i) {
    mF(e, function (t) {
      if (s) {
        var i, n = t[Dh];
        if (!n) return (h || TF)(wt + e + Nh), i = new Error(wt + e + Nh), s(n, i);
        try {
          n = JSON[Bh](n)
        } catch (t) {
          (h || TF)(t), i = t
        }
        s(n, i)
      }
    }, h, t, i)
  }, wF.isMetaKey = lF, wF.calculateDistance = rB, wF[Fh] = hB, wF[Gh] = oF, wF.alert = function (t) {
    alert(t)
  }, wF[$h] = function (t, i, n, e) {
    var s = prompt(t, i);
    return s != i && n ? n[p](e, s) : s
  }, wF[Yh] = function (t, i, n) {
    var e = confirm(t);
    return e && i ? i[p](n) : e
  }, wF[Wh] = ZB;
  var OF = {
    IMAGE_ADJUST_FLIP: Uh,
    IMAGE_ADJUST_MIRROR: Hh,
    SELECTION_TYPE_BORDER_RECT: Vh,
    SELECTION_TYPE_BORDER: jh,
    SELECTION_TYPE_SHADOW: Xh,
    NS_SVG: "http://www.w3.org/2000/svg",
    PROPERTY_TYPE_ACCESSOR: 0,
    PROPERTY_TYPE_STYLE: 1,
    PROPERTY_TYPE_CLIENT: 2,
    EDGE_TYPE_DEFAULT: null,
    EDGE_TYPE_ELBOW: Zh,
    EDGE_TYPE_ELBOW_HORIZONTAL: zh,
    EDGE_TYPE_ELBOW_VERTICAL: Kh,
    EDGE_TYPE_ORTHOGONAL: Jh,
    EDGE_TYPE_ORTHOGONAL_HORIZONTAL: Qh,
    EDGE_TYPE_ORTHOGONAL_VERTICAL: qh,
    EDGE_TYPE_HORIZONTAL_VERTICAL: tr,
    EDGE_TYPE_VERTICAL_HORIZONTAL: ir,
    EDGE_TYPE_EXTEND_TOP: nr,
    EDGE_TYPE_EXTEND_LEFT: er,
    EDGE_TYPE_EXTEND_BOTTOM: sr,
    EDGE_TYPE_EXTEND_RIGHT: hr,
    EDGE_TYPE_ZIGZAG: rr,
    EDGE_CORNER_NONE: ar,
    EDGE_CORNER_ROUND: or,
    EDGE_CORNER_BEVEL: fr,
    GROUP_TYPE_RECT: cr,
    GROUP_TYPE_CIRCLE: ur,
    GROUP_TYPE_ELLIPSE: _r,
    SHAPE_CIRCLE: lr,
    SHAPE_RECT: cr,
    SHAPE_ROUNDRECT: dr,
    SHAPE_STAR: vr,
    SHAPE_TRIANGLE: br,
    SHAPE_HEXAGON: yr,
    SHAPE_PENTAGON: gr,
    SHAPE_TRAPEZIUM: Er,
    SHAPE_RHOMBUS: xr,
    SHAPE_PARALLELOGRAM: pr,
    SHAPE_HEART: Tr,
    SHAPE_DIAMOND: mr,
    SHAPE_CROSS: wr,
    SHAPE_ARROW_STANDARD: Or,
    SHAPE_ARROW_1: Ar,
    SHAPE_ARROW_2: Ir,
    SHAPE_ARROW_3: Sr,
    SHAPE_ARROW_4: Mr,
    SHAPE_ARROW_5: kr,
    SHAPE_ARROW_6: Cr,
    SHAPE_ARROW_7: Lr,
    SHAPE_ARROW_8: Rr,
    SHAPE_ARROW_OPEN: Pr
  };

  function dB(t, i, n, e, s, h, r, a) {
    return !(r <= 0 || a <= 0 || n <= 0 || e <= 0) && (a += h, n += t, e += i, ((r += s) < s || t < r) && (a < h || i < a) && (n < t || s < n) && (e < i || h < e))
  }

  function bB(t, i, n, e, s, h, r, a) {
    return t <= s && i <= h && s + r <= t + n && h + a <= i + e
  }

  function AF(t, i, n) {
    return t instanceof Object && t.x ? SF(t, i, 0, 0) : IF(t, i, n, 0, 0)
  }

  function IF(t, i, n, e, s) {
    var h = Math.sin(n),
      r = Math.cos(n),
      a = t - e,
      o = i - s;
    return new fB(t = a * r - o * h + e, i = a * h + o * r + s, n)
  }

  function SF(t, i, n, e) {
    n = n || 0, e = e || 0;
    var s = Math.sin(i),
      h = Math.cos(i),
      r = t.x - n,
      a = t.y - e;
    return t.x = r * h - a * s + n, t.y = r * s + a * h + e, t
  }

  function MF(t, i, n) {
    return kF(t, i, n, 0, 0)
  }

  function kF(t, i, n, e, s) {
    var h = IF(t.x, t.y, i, e, s),
      r = IF(t.x + t.width, t.y, i, e, s),
      a = IF(t.x + t[Yt], t.y + t[Wt], i, e, s),
      o = IF(t.x, t.y + t[Wt], i, e, s);
    return n ? n[St]() : n = new yB, n[Dr](h), n[Dr](r), n.addPoint(a), n[Dr](o), n
  }
  OF[Nr] = Br, OF[Fr] = or, OF[Gr] = $r, OF[Yr] = fr, OF.LINE_JOIN_TYPE_ROUND = or, OF[Wr] = Ur, OF.EDGE_BUNDLE_TYPE_CURVE = Hr, OF[Vr] = jr, OF[Xr] = Zh, sB[Zr] = OF[zr], sB[Kr] = tF ? 8 : 3, sB[Jr] = 2, sB.SELECTION_SHADOW_BLUR = 7, sB[Qr] = JN(3422561023), sB.SELECTION_TYPE = OF[zr], sB.BORDER_RADIUS = 10, sB[qr] = 10, sB[ta] = 10, sB.IMAGE_MAX_SIZE = 200, sB[ia] = 1.2;
  var CF, LF = u[na] || 1;

  function RF(t, i) {
    var n = this[ea] || 1;
    this[Yn][Yt] = t + sa, this.style[Wt] = i + sa, this.width = t * n, this.height = i * n
  }

  function PF(t, i, n) {
    var e = x.createElement(ha);
    if (e.g = e[ra](aa), !0 !== t && !n) return t && i && (e[Yt] = t, e.height = i), e;
    var s, h = e.g;
    return h[ea] = e[ea] = (s = h[oa] || h[fa] || h.msBackingStorePixelRatio || h[ca] || h.backingStorePixelRatio || 1, LF / s), e.setSize = RF, h._mB = function () {
      this[ha].width = this[ha].width
    }, t && i && e[ua](t, i), e
  }

  function DF(t, i) {
    return CF = CF || PF(), t && i && (CF[Yt] = t, CF[Wt] = i), CF.g
  }
  LF < 1 && (LF = 1), wF[_a] = PF;
  var NF = CN && !BN;

  function BF(t, i, n) {
    return (n || sB[la]) + $ + (i || sB[da]) + xt + (t || sB[pt])
  }

  function FF(t, i, n, e, s) {
    var h;
    try {
      h = t[va](i, n, e, s)
    } catch (t) {}
    return h
  }

  function GF(s, h) {
    var r = 1 / (h = h || s(1)),
      a = .5 * r,
      o = Math.min(1, h / 100);
    return function (t) {
      if (t <= 0) return 0;
      if (h <= t) return 1;
      for (var i = t * r, n = 0; n++ < 10;) {
        var e = t - s(i);
        if (Math.abs(e) <= o) return i;
        i += e * a
      }
      return i
    }
  }

  function $F(t, i, n) {
    var e = 1 - t,
      s = e * e * i[0] + 2 * e * t * i[2] + t * t * i[4],
      h = e * e * i[1] + 2 * e * t * i[3] + t * t * i[5];
    if (n) {
      var r = (i[0] + i[4] - 2 * i[2]) * t + i[2] - i[0],
        a = (i[1] + i[5] - 2 * i[3]) * t + i[3] - i[1];
      return {
        x: s,
        y: h,
        rotate: Math[Pt](a, r)
      }
    }
    return {
      t: t,
      x: s,
      y: h
    }
  }

  function YF(t, i, n) {
    var e = t - 2 * i + n;
    return 0 != e ? (t - i) / e : -1
  }

  function WF(t, i) {
    return Math.abs(t - i) < 1e-7
  }

  function UF(t, i) {
    return WF(t[0], i[0]) && WF(t[1], i[1])
  }

  function HF(t, i, n) {
    var e = 1 - t,
      s = i[0],
      h = i[2],
      r = i[4],
      a = i[6],
      o = s * e * e * e + 3 * h * t * e * e + 3 * r * t * t * e + a * t * t * t;
    if (n) var f = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
    var c = (s = i[1]) * e * e * e + 3 * (h = i[3]) * t * e * e + 3 * (r = i[5]) * t * t * e + (a = i[7]) * t * t * t;
    if (n) {
      var u = 3 * t * t * a + (6 * t - 9 * t * t) * r + (9 * t * t - 12 * t + 3) * h + (-3 * t * t + 6 * t - 3) * s;
      return {
        x: o,
        y: c,
        rotate: Math[Pt](u, f)
      }
    }
    return {
      x: o,
      y: c
    }
  }

  function VF(t, i, n) {
    return jF(i, n, t.cx, t.cy) <= t[ba] + JF
  }
  var jF = function (t, i, n, e) {
    var s = t - n,
      h = i - e;
    return s * s + h * h
  };

  function XF(t, i, n, e) {
    return n = n || rB(t.x, t.y, i.x, i.y), new ZF((t.x + i.x) / 2, (t.y + i.y) / 2, n / 2, t, i, null, e)
  }

  function ZF(t, i, n, e, s, h, r) {
    this.cx = t, this.cy = i, this.r = n, this[ba] = n * n, this.p1 = e, this.p2 = s, this.p3 = h, this[ya] = r
  }

  function zF(t, i, n, e) {
    this.cx = t, this.cy = i, this[Yt] = n, this[Wt] = e
  }

  function KF(t) {
    var i = t[0],
      n = t[1],
      e = t[2];
    return function t(i, n, e, s, h) {
      for (var r, a, o, f = i.length, c = h._squareR, u = 0; u < f; u++)
        if ((r = i[u]) != n && r != e && r != s) {
          var _ = jF(h.cx, h.cy, r.x, r.y);
          c < _ - JF && (c = _, a = r)
        } if (!a) return h;
      var l = ZF[ga](a, n, e),
        d = ZF._l1Circle(a, n, s),
        v = ZF._l1Circle(a, s, e);
      return VF(l, s.x, s.y) && (o = l), VF(d, e.x, e.y) && (!o || o.r > d.r) && (o = d), VF(v, n.x, n.y) && (!o || o.r > v.r) && (o = v), t(i, n = o.p1, e = o.p2, s = o.p3 || o._otherPoint, o)
    }(t, i, n, e, ZF[ga](i, n, e))
  }
  ZF[_] = {
    equals: function (t) {
      return this.cx == t.cx && this.cy == t.cy && this.r == t.r
    }
  }, ZF[ga] = function (t, i, n) {
    if (!n) return XF(t, i);
    var e, s = jF(t.x, t.y, i.x, i.y),
      h = jF(t.x, t.y, n.x, n.y),
      r = jF(n.x, n.y, i.x, i.y);
    if (h + r <= s + JF) return XF(t, i, 0, n);
    if (s + r <= h + JF) return XF(t, n, 0, i);
    if (s + h <= r + JF) return XF(i, n, 0, t);
    Math.abs(n.y - i.y) < 1e-4 && (e = t, t = i, i = e), e = n.x * (t.y - i.y) + t.x * (i.y - n.y) + i.x * (-t.y + n.y);
    var a = (n.x * n.x * (t.y - i.y) + (t.x * t.x + (t.y - i.y) * (t.y - n.y)) * (i.y - n.y) + i.x * i.x * (-t.y + n.y)) / (2 * e),
      o = (i.y + n.y) / 2 - (n.x - i.x) / (n.y - i.y) * (a - (i.x + n.x) / 2);
    return new ZF(a, o, rB(a, o, t.x, t.y), t, i, n)
  };
  var JF = .01;

  function QF(t) {
    return (t = iG(t)) > Math.PI / 2 && t < 3 * Math.PI / 2
  }

  function qF(t, i, n, e) {
    var s = function (t, i) {
      if (!this._kV || this._hB[N] < 2) {
        if (this._hB[N]) {
          var n = !1 !== i ? this._hB[0][Ea] : this._hB[this._hB[N] - 1][xa];
          return t && (n.x += t), n
        }
        return null
      }
      var e = this._hB;
      !1 === i && (t += this._kV);
      var s, h = e[0];
      if (t <= 0) return uW(h[Ns][0], h[Ns][1], e[1][Ns][0], e[1][Ns][1], t, 0);
      if (t >= this._kV) {
        var r, a, o = (h = e[e[N] - 1]).points,
          f = o[(l = o[N]) - 2],
          c = o[l - 1];
        return a = 4 <= l ? (r = o[l - 4], o[l - 3]) : (r = (v = (h = e[e[N] - 2])[xa]).x, v.y), uW(f, c, f + f - r, c + c - a, t - this._kV, 0)
      }
      for (var u = 0, _ = 1, l = e.length; _ < l; _++)
        if ((s = e[_])._kV) {
          if (!(u + s._kV < t)) {
            var d, v = h[xa];
            if (s[Oi] == RG) {
              var b = s.points;
              d = tG(t - u, s, v.x, v.y, b[0], b[1], b[2], b[3], s._r)
            } else {
              if (!s._lf) return uW(v.x, v.y, s[Ns][0], s[Ns][1], t - u, 0);
              var y = GF(s._lf, s._kV)(t - u);
              b = s[Ns], (d = s[Oi] == LG && 6 == b[N] ? HF(y, [v.x, v.y][B](b), !0) : $F(y, [v.x, v.y].concat(b), !0)).t = y
            }
            return d
          }
          u += s._kV, h = s
        } else h = s
    } [p](this, t, n);
    return s && i && (s[kt] ? (e && QF(s[kt]) && (i = -i), s.x -= i * Math.sin(s[kt] || 0), s.y += i * Math.cos(s[kt] || 0)) : s.y += i), s
  }

  function tG(t, i, n, e, s, h, r, a) {
    if (t <= i._l1) return uW(n, e, s, h, t, t);
    if (t >= i._kV) return t -= i._kV, uW(i[pa], i[Ta], r, a, t, t);
    if (t -= i._l1, i._o) {
      var o = t / i._r;
      i[ma] && (o = -o);
      var f = IF(i._p1x, i[wa], o, i._o.x, i._o.y);
      return f[kt] += i[Oa] || 0, f[kt] += Math.PI, f
    }
    return uW(i._p1x, i._p1y, i[pa], i._p2y, t, t)
  }

  function uB(t, i, n) {
    var e, s, h;
    0 == t._o9 ? (e = -1, h = 0, s = i) : 0 == t._oB ? (e = 0, h = 1, s = n) : (e = -1 / t._o9, s = (t._o9 - e) * i + t._oA, h = 1);
    var r = new cB;
    return r._o9 = e, r._oA = s, r._oB = h, r._o4 = i, r._o5 = n, r
  }

  function iG(t) {
    return (t %= aB) < 0 && (t += aB), t
  }

  function nG(t, i, n, e) {
    return Math[Pt](e - i, n - t)
  }
  var eG = {
      _oA1: function (t, i, n, e, s, h) {
        if (UN(t) && (t = EB[gi](t)), !t) return {
          x: 0,
          y: 0
        };
        var r = 0,
          a = 0,
          o = i._kV;
        if (n = n || 0, t.x === k) {
          var f = t[ti],
            c = t[ii],
            u = !0;
          switch (f) {
            case pB:
              u = !1;
              break;
            case "c":
              r += o / 2
          }
          switch (c) {
            case TB:
              a -= n / 2;
              break;
            case mB:
              a += n / 2
          }
        } else r = t.x, a = t.y, 0 < Math.abs(r) && Math.abs(r) < 1 && (r *= o);
        s && null != e && (a += e.y, Math.abs(e.x) < 1 ? r += e.x * o : r += e.x);
        var _ = qF[p](i, r, a, u, h);
        return _ ? (s || null == e || _.offset(e), _) : {
          x: 0,
          y: 0
        }
      },
      _n5: function (t, i, n) {
        var e = i[Oi],
          s = i[Ns];
        switch (e) {
          case RG:
            t[Aa](s[0], s[1], s[2], s[3], i._r);
            break;
          case MG:
            t[Ia](s[0], s[1]);
            break;
          case kG:
            t.lineTo(s[0], s[1]);
            break;
          case CG:
            t[Sa](s[0], s[1], s[2], s[3]);
            break;
          case LG:
            t[Ma](s[0], s[1], s[2], s[3], s[4], s[5]);
            break;
          case PG:
            t.closePath()
        }
      },
      _66: function (t, i, n, e) {
        var s = i[Oi];
        if (s != MG && s != PG) {
          var h = n[xa],
            r = i.points;
          switch (n.type == MG && t.add(h.x, h.y), s) {
            case RG:
              ! function (t, i, n, e, s, h, r, a) {
                var o = rB(i, n, e, s),
                  f = rB(e, s, h, r);
                if (!o || !f) return t._d = 0, t._r = 0, t._l1 = o, t._l2 = f, t._kV = 0;
                var c = nG(e, s, i, n),
                  u = nG(e, s, h, r),
                  _ = (t[Oa] = c) - (t._o92 = u);
                (_ = iG(_)) > Math.PI && (_ = 2 * Math.PI - _, t[ma] = !0);
                var l = Math.PI - _,
                  d = Math.tan(_ / 2),
                  v = a / d,
                  b = Math.min(o, f);
                b < v && (a = d * (v = b));
                var y, g = e + Math.cos(c) * v,
                  E = s + Math.sin(c) * v,
                  x = e + Math.cos(u) * v,
                  p = s + Math.sin(u) * v,
                  T = new cB(i, n, e, s),
                  m = new cB(e, s, h, r),
                  w = uB(T, g, E),
                  O = uB(m, x, p),
                  A = w._3U(O),
                  I = Math[Pt](E - A.y, g - A.x),
                  S = Math.atan2(p - A.y, x - A.x);
                y = t._CCW ? S : I;
                for (var M, k = 0; k < 4;) {
                  var C, L;
                  if (iG(k * oB - y) <= l && (M ? M++ : M = 1, L = 0 == k ? (C = A.x + a, A.y) : 1 == k ? (C = A.x, A.y + a) : 2 == k ? (C = A.x - a, A.y) : (C = A.x, A.y - a), t[ka + M] = {
                      x: C,
                      y: L
                    }, 2 == M)) break;
                  k++
                }
                t[Ca] = g, t[wa] = E, t[pa] = x, t[Ta] = p, t._o = A, t._d = v, t._r = a, t._l1 = o - v, t._l2 = f - v, t._kV = t._l1 + l * a
              }(i, h.x, h.y, r[0], r[1], r[2], r[3], r[4]), t.add(r[0], r[1]), t.add(i[Ca], i[wa]), t.add(i[pa], i._p2y), i[La] && t.add(i.$boundaryPoint1.x, i[La].y), i[Ra] && t.add(i.$boundaryPoint2.x, i.$boundaryPoint2.y);
              break;
            case kG:
              t.add(r[0], r[1]);
              break;
            case CG:
              ! function (t, i) {
                i.add(t[4], t[5]);
                var n = YF(t[0], t[2], t[4]);
                if (0 < n && n < 1) {
                  var e = $F(n, t);
                  i.add(e.x, e.y)
                }
                var s = YF(t[1], t[3], t[5]);
                0 < s && s < 1 && (e = $F(s, t), i.add(e.x, e.y))
              }([h.x, h.y][B](r), t);
              break;
            case LG:
              ! function (t, i) {
                i.add(t[6], t[7]);
                var n = function (t, i, n, e, s, h, r, a) {
                  for (var o, f, c, u, _, l, d, v, b = [], y = 0; y < 2; ++y)
                    if (c = 0 === y ? (f = 6 * t - 12 * n + 6 * s, o = -3 * t + 9 * n - 9 * s + 3 * r, 3 * n - 3 * t) : (f = 6 * i - 12 * e + 6 * h, o = -3 * i + 9 * e - 9 * h + 3 * a, 3 * e - 3 * i), Math.abs(o) < 1e-12) {
                      if (Math.abs(f) < 1e-12) continue;
                      0 < (u = -c / f) && u < 1 && b.push(u)
                    } else d = f * f - 4 * c * o, v = Math.sqrt(d), d < 0 || (0 < (_ = (-f + v) / (2 * o)) && _ < 1 && b.push(_), 0 < (l = (-f - v) / (2 * o)) && l < 1 && b[M](l));
                  return b
                }.apply(this, t);
                if (n)
                  for (var e = 0; e < n[N]; e++) {
                    var s = n[e];
                    if (!(s < 0 || 1 < s)) {
                      var h = HF(s, t);
                      i.add(h.x, h.y)
                    }
                  }
              }([h.x, h.y][B](r), t);
              break;
            case PG:
              e && t.add(e[Ns][0], e[Ns][1])
          }
        }
      },
      _68: function (t, i, n) {
        var e = t[Oi];
        if (e == MG) return 0;
        var s, h, r, a, o, f, c, u, _, l, d, v, b, y, g, E, x, p, T, m, w, O, A, I, S, M, k = i[xa],
          C = t[Ns];
        switch (e == LG && 4 == C[N] && (e = CG), e) {
          case kG:
            return rB(C[0], C[1], k.x, k.y);
          case RG:
            return t._kV;
          case CG:
            var L = function (t) {
              if (UF([t[0], t[1]], [t[2], t[3]])) {
                var i = t[0],
                  n = t[1],
                  e = t[4],
                  s = t[5],
                  h = Math[Gt](jF(i, n, e, s));
                return function (t) {
                  return h * t
                }
              }
              if (UF([t[0], t[1]], [t[4], t[5]]) || UF([t[2], t[3]], [t[4], t[5]])) return i = t[0], n = t[1], e = t[2], s = t[3], h = Math.sqrt(jF(i, n, e, s)),
                function (t) {
                  return h * t
                };
              var r = t[0],
                a = t[2],
                o = t[4],
                f = r - 2 * a + o,
                c = 2 * a - 2 * r,
                u = (r = t[1]) - 2 * (a = t[3]) + (o = t[5]),
                _ = 2 * a - 2 * r,
                l = 4 * (f * f + u * u),
                d = 4 * (f * c + u * _),
                v = c * c + _ * _;
              if ((h = 4 * l * v - d * d) < 1e-5 && -1e-5 < h) {
                var b = rB(t[0], t[1], t[2], t[3]),
                  y = rB(t[2], t[3], t[4], t[5]);
                return function (t) {
                  return (2 * b + (y - b) * t) * t
                }
              }
              var g, E = 1 / h,
                x = .125 * Math.pow(l, -1.5),
                p = 2 * Math[Gt](l),
                T = (h * (g = d / Math.sqrt(h), Math.log(g + Math[Gt](g * g + 1))) + Math[Gt](l) * (2 * d) * Math[Gt](v)) * x;
              return function (t) {
                var i = d + 2 * t * l,
                  n = i / Math[Gt](h),
                  e = i * i * E;
                return (h * Math.log(n + Math.sqrt(1 + e)) + p * i * Math[Gt](v + t * d + t * t * l)) * x - T
              }
            }([k.x, k.y][B](C));
            return (t._lf = L)(1);
          case LG:
            return s = [k.x, k.y][B](C), r = P(s[0], s[2], s[4], s[6]), a = P(s[1], s[3], s[5], s[7]), o = 1 / (h = h || 100), L = function (t) {
              if (!t) return 0;
              for (var i, n = 0, e = 0;;) {
                if (t <= (i = n + o)) return e + D(n, i - n);
                e += D(n, o), n = i
              }
            }, (t._lf = L)(1) || (f = [k.x, k.y][B](C), c = f[0], u = f[1], _ = f[2], l = f[3], d = f[4], v = f[5], b = f[6], y = f[7], w = 3 * (3 * (x = _ - 0) - (g = c - 0) - 3 * (T = d - 0) + (b - 0)), O = 6 * (g - 2 * x + T), A = 3 * (x - g), I = 3 * (3 * (p = l - 0) - (E = u - 0) - 3 * (m = v - 0) + (y - 0)), S = 6 * (E - 2 * p + m), M = 3 * (p - E), (R(0) + 4 * R(.5) + R(1)) / 6);
          case PG:
            if (k && n) return t[Ns] = n.points, rB(n[Ns][0], n[Ns][1], k.x, k.y)
        }

        function R(t) {
          var i = w * t * t + O * t + A,
            n = I * t * t + S * t + M;
          return Math[Gt](i * i + n * n)
        }

        function P(t, i, n, e) {
          var s = 3 * i - t - 3 * n + e,
            h = 2 * t - 4 * i + 2 * n,
            r = i - t;
          return function (t, i) {
            return 3 * (s * t * t + h * t + r)
          }
        }

        function D(t, i) {
          var n = r(t),
            e = a(t);
          return Math[Gt](n * n + e * e) * i
        }
        return 0
      }
    },
    sG = /^data:image\/(\w+);base64,/i,
    hG = /^gif/i,
    rG = /^svg/i,
    aG = 10,
    oG = 11,
    fG = 12,
    cG = 20,
    uG = 30;

  function _G(t, i, n, e, s) {
    if (i && n) {
      t[Pa] = .5, t[Da] = Na, t.strokeRect(0, 0, i, n), e && (t[Ba] = e, t[Fa](0, 0, i, n));
      var h = Math.min(i / 50, n / 38);
      t[Ga](), t[$a] = .6, t[Ya](i / 2, n / 2), t[Wa](h, h), t[Ya](-20, -14), t[Ua](), t[cr](0, 0, 40, 28), t.clip(), t[Ba] = Ha, t[Va](), t[$a] = 1, t[Ia](0, 21), t[ja](12, 12), t.lineTo(26, 28), t[Ia](18, 18), t.lineTo(28, 8), t[ja](40, 18), t[Pa] = 2, t[Da] = Xa, t[Za](), s && (t[Ua](), t.moveTo(26, -4), t[ja](17, 11), t[ja](23, 17), t.lineTo(14, 32), t.lineWidth = 5, t[Da] = e || za, t[Za]()), t[Ka]()
    }
  }

  function lG(t) {
    var i = sG[Ja](t);
    if (i) return i[1];
    var n = t.lastIndexOf(nt);
    return 0 <= n && n < t[N] - 1 ? t[Xn](n + 1) : void 0
  }

  function dG(t, i, n) {
    if (this._mQ = function (t) {
        if (!t) return null;
        if (t instanceof NG) return uG;
        if (t[no] instanceof Function) return cG;
        if (UN(t)) {
          var i = lG(t);
          if (i) {
            if (!ON && hG[S](i)) return fG;
            if (rG[S](i)) return oG
          }
          return aG
        }
      }(t), !this._mQ) throw new Error("the image format is not supported", t);
    this._mO = t, this[eo] = i, this._9K = n, this[Yt] = i || sB[Qa], this[Wt] = n || sB[so], this._k9 = {}
  }
  sB[Qa] = 50, sB.IMAGE_HEIGHT = 30, sB.IMAGE_DEFAULT = {
    draw: function (t, i) {
      _G(t, i[Yt], i[Wt], i.renderColor)
    }
  }, sB[qa] = {
    draw: function (t, i) {
      _G(t, i.width, i[Wt], i[to], !0)
    }
  }, sB[io] = 1e6, dG[_] = {
    _k5: 0,
    _6W: !0,
    _lN: null,
    _k6: null,
    _mO: null,
    _mQ: null,
    _oA6: k,
    _9K: k,
    _6X: function () {
      return 1 == this._k5
    },
    getBounds: function (t) {
      return this._mQ == uG ? this._mO[ho](t) : (this._6W && this._gJ(), this)
    },
    validate: function () {
      this._6W && this._gJ()
    },
    _gJ: function () {
      if (this._6W = !1, this._mQ == uG) return this._mO[ro](), void this[ao](this._mO[oo]);
      if (this._mQ != cG) {
        if (1 != this._k5) try {
          this._eJ()
        } catch (t) {
          this._k5 = 3, wF.error(t)
        }
      } else this._9L()
    },
    _5I: function () {
      this._eM(), this[fo].clear(), delete this[fo]
    },
    _j0: function (t) {
      this._lN[co] && this._lN[co][uo](this._lN), this._k5 = 3, wF.error(_o + this._mO), this[lo] = null, this._k6 = null, this._lN = null, !1 !== t && this._5I()
    },
    _eJ: function () {
      var t, n, i, e, s, h, r, a, o, f, c, u, _, l, d, v = this._mO;
      if (this._k5 = 1, this._dispatcher = new NB, this._mQ != fG) this._lN || (this._lN = x[Gn](vo), ON && (this._lN[Yn].visibility = bo, x[yo][ee](this._lN))), ON ? (this._lN[go] = function (t) {
        setTimeout(this._8H.bind(this), 100)
      }.bind(this), this._lN[Eo] = this._j0.bind(this)) : (this._lN[go] = this._8H[Ye](this), this._lN[Eo] = this._8H.bind(this)), this._lN.src = v;
      else {
        for (var b in e$) this[b] = e$[b];
        t = this._mO, i = (n = this)._dJ, e = this._j0, s = this._f9, l = {
          hdr: y(function (t) {
            h = t, (u = u || PF()).width = h.width, u.height = h[Wt], n.width = h[Yt], n[Wt] = h[Wt]
          }),
          gce: y(function (t) {
            E(), o = f, c = f = a = r = null, r = t[xo] ? t.transparencyIndex : null, a = 10 * t[po], f = t[To]
          }),
          com: y(g),
          app: {
            NETSCAPE: y(g)
          },
          img: y(function (t) {
            c = c || u[ra](aa);
            var n = t[mo] ? t.lct : h.gct,
              e = c.getImageData(t.leftPos, t[wo], t[Yt], t[Wt]);
            t[Oo][Mt](function (t, i) {
              r !== t ? (e.data[4 * i + 0] = n[t][0], e[Ki][4 * i + 1] = n[t][1], e.data[4 * i + 2] = n[t][2], e.data[4 * i + 3] = 255) : 2 !== o && 3 !== o || (e[Ki][4 * i + 3] = 0)
            }), c.putImageData(e, t[Ao], t[wo])
          }),
          eof: function (t) {
            E(), i[p](n)
          }
        }, d = new XMLHttpRequest, ON || d[Io]("text/plain; charset=x-user-defined"), d[go] = function (t) {
          _ = new s$(d[Dh]);
          try {
            h$(_, l)
          } catch (t) {
            e.call(n, Bh)
          }
        }, d[Eo] = function () {
          e.call(n, So)
        }, d.open(rh, t, !0), d[ch]()
      }

      function y(i) {
        return function (t) {
          i(t)
        }
      }

      function g() {}

      function E() {
        if (c) {
          var t = c[va](0, 0, h.width, h.height),
            i = {
              data: t,
              _pixels: $G(t[Ki], h[Yt], h[Wt]),
              delay: a
            };
          s[p](n, i)
        }
      }
    },
    _j2: !0,
    _8H: function () {
      var t = this._lN[Yt],
        i = this._lN.height;
      if (t && i) {
        if (this._lN.parentNode && this._lN[co][uo](this._lN), this._k5 = 2, this.width = t, this.height = i, ON && this._mQ == oG) this[lo] = null, this._j2 = !1;
        else if (this._mQ == oG || (s = lG(s = this._lN.src), /^png/i [S](s) || /^gif/i [S](s))) {
          var n, e = PF();
          e[Yt] = t, e[Wt] = i, e.g[Mo](this._lN, 0, 0, t, i);
          try {
            n = e.g[va](0, 0, e[Yt], e.height)[Ki]
          } catch (t) {
            this._j2 = !1, wF.error(t)
          }
          n && function (t) {
            for (var i = !1, n = 3, e = t[N]; n < e; n += 4)
              if (t[n] < 255) {
                i = !0;
                break
              } return i
          }((e.g, n)) && (this._k6 = e, this._pixels = function () {
            var t = e[Yt],
              i = e.height,
              n = FF(e.g, 0, 0, t, i);
            if (n) return $G(n[Ki], t, i)
          }())
        }
        var s;
        this._5I()
      } else this._j0()
    },
    _9L: function () {
      var t = this._mO;
      if (t[no] instanceof Function) {
        if (!1 === t[ko] && t[Yt] && t[Wt]) return this[Yt] = t[Yt], void(this.height = t[Wt]);
        var i = t[Yt] || sB[Co],
          n = t[Wt] || sB[Co],
          e = this._eL();
        e[Yt] = i, e.height = n;
        var s = e.g;
        t[no](s);
        var h = FF(s, 0, 0, i, n);
        if (h) {
          var r = $G(h.data, i, n);
          this.x = r._x, this.y = r._y, this[Yt] = r[Lo], this[Wt] = r[Ro], e[Yt] = this[Yt], e[Wt] = this[Wt], s.putImageData(h, -this.x, -this.y), this[lo] = r
        }
      } else this._j0(!1)
    },
    _eL: function () {
      return this._k6 || (this._k6 = PF())
    },
    draw: function (t, i, n, e, s, h) {
      if (this[Yt] && this[Wt]) {
        i = i || 1, e = e || 1, s = s || 1;
        var r = this.width * e,
          a = this[Wt] * s;
        if (h && n[Po] && (t.shadowColor = n[Po], t[Do] = (n[Do] || 0) * i, t.shadowOffsetX = (n[No] || 0) * i, t[Bo] = (n.shadowOffsetY || 0) * i), 1 != this._k5)
          if (3 != this._k5) {
            if (this._mQ == uG) return t.scale(e, s), void this._mO[no](t, i, n);
            var o = this._gK(i, e, s);
            if (o) return (this.x || this.y) && t.translate(this.x * e, this.y * s), t[Wa](e / o[Wa], s / o.scale), void o._n5(t, n[to], n[Fo]);
            this._k8(t, i, e, s, this[Yt] * e, this[Wt] * s, n)
          } else sB[qa] && sB.IMAGE_INVALID[no](t, {
            src: this._mO,
            width: r,
            height: a,
            renderColor: n[to]
          });
        else sB.IMAGE_DEFAULT && sB[Go][no](t, {
          src: this._mO,
          width: r,
          height: a,
          renderColor: n[to]
        })
      }
    },
    _k8: function (t, i, n, e, s, h, r) {
      if (this._mQ == cG) return 1 != n && 1 != e && t[Wa](n, e), void this._mO[no](t, r);
      if (this._lN) {
        if (!kN) return void t.drawImage(this._lN, 0, 0, s, h);
        n = i * s / this[Yt], e = i * h / this[Wt], t.scale(1 / n, 1 / e), t[Mo](this._lN, 0, 0, s * n, h * e)
      }
    },
    _k9: null,
    _gK: function (t, i, n) {
      if (this._mQ == cG && !1 === this._mO[ko]) return null;
      if (this._mQ == aG || (t *= Math.max(i, n)) <= 1) return this._defaultCache || (this[$o] = this._gL(this._k6 || this._lN, 1, this._j2)), this[$o];
      var e = this._k9[Yo] || 0;
      if ((t = Math[c](t)) <= e) {
        for (var s = t, h = this._k9[s]; !h && ++s <= e;) h = this._k9[s];
        if (h) return h
      }
      t % 2 && t++;
      var r = this[Yt] * t,
        a = this.height * t;
      if (r * a > sB[io]) return null;
      var o = PF(r, a);
      return (this.x || this.y) && o.g.translate(-this.x * t, -this.y * t), this._k8(o.g, 1, t, t, r, a), this._gL(o, t)
    },
    _gL: function (t, i) {
      var n = new WG(t, i);
      return this._k9[i] = n, this._k9[Yo] = i, n
    },
    hitTest: function (t, i, n) {
      return this._mQ == uG ? this._mO[Wo][d](this._mO, arguments) : !(this[lo] || this._lN && this._lN[lo]) || (this[lo] || this._lN[lo])._j4(t, i, n)
    },
    _eM: function () {
      this._dispatcher && this[fo][O](new SB(this, Uo, Ho, this._lN))
    },
    _oA8: function (t, i) {
      this[fo] && this[fo][Xi](t, i)
    },
    _6Z: function (t, i) {
      this[fo] && this[fo][Zi](t, i)
    },
    _oBO: function (t) {
      this._k9 = {}, (t || 1e5 < this.width * this[Wt]) && (this._lN = null, this._k6 = null)
    }
  }, dN(dG, yB);
  var vG = {};

  function bG(t, i, n, e) {
    if (i) return vG[t] = new dG(i, n, e), t;
    delete vG[t]
  }

  function yG(t) {
    if (t._lN) return t._lN;
    if (!UN(t) && !t.name) return t._lN = new dG(t);
    var i = t.name || t;
    return i in vG ? vG[i] : vG[i] = new dG(t)
  }

  function gG(t) {
    return t in vG
  }

  function EG(t, i, n) {
    n = n || {};
    var e = t[ho](n[Pa]);
    if (!e[Yt] || !e[Wt]) return !1;
    var s = i[ra](aa),
      h = i.ratio || 1,
      r = n[Vo] || jo,
      a = /full/i [S](r),
      o = /uniform/i.test(r),
      f = 1,
      c = 1;
    if (a) {
      var u, _, l, d, v = i[Yt],
        b = i[Wt],
        y = n.padding,
        g = 0,
        E = 0;
      y && (WN(y) ? u = _ = l = d = y : (u = y.top || 0, _ = y[Ft] || 0, l = y.left || 0, d = y[Bt] || 0), v -= l + d, b -= u + _, g += l, E += u), f = v / e[Yt], c = b / e[Wt], o && (c < f ? (g += (v - c * e[Yt]) / 2, f = c) : f < c && (E += (b - f * e.height) / 2, c = f)), (g || E) && s.translate(g, E)
    }
    s[Ya](-e.x * f, -e.y * c), t.draw(s, h, n, f, c, !0)
  }

  function xG(t, i, n, e, s, h) {
    this.type = t, this.colors = i, this.positions = n, this.angle = e || 0, this.tx = s || 0, this.ty = h || 0
  }
  wF[Mo] = function (t, i, n) {
    var e = yG(t);
    if (!e) return wF[Xo](Zo + t), !1;
    e.validate(), e._mQ != fG && !e._6X() || e[zo](function (t) {
      t[pi] && (this[Yt] = this[Yt], EG(t[pi], this, n))
    }, i), EG(e, i, n)
  }, wF[Ko] = bG, wF.hasImage = gG, wF[Jo] = function () {
    var t = [];
    for (var i in vG) t[M](i);
    return t
  }, OF[Qo] = si, OF[qo] = ei, xG[_] = {
    type: null,
    colors: null,
    positions: null,
    angle: null,
    tx: 0,
    ty: 0,
    position: EB[ui],
    isEmpty: function () {
      return null == this.colors || 0 == this[tf][N]
    },
    _7K: function () {
      var t = this[tf][N];
      if (1 == t) return [0];
      for (var i = [], n = 1 / (t - 1), e = 0; e < t; e++) i.push(n * e);
      return this[nf] || (this[nf] = i), i
    },
    generatorGradient: function (t) {
      if (null == this[tf] || 0 == this[tf].length) return null;
      var i, n = DF();
      if (this.type == OF[qo]) {
        var e, s = this[ef];
        if (s > Math.PI && (s -= Math.PI), s <= Math.PI / 2) {
          var h = Math[Pt](t[Wt], t.width),
            r = Math[Gt](t[Yt] * t.width + t[Wt] * t[Wt]),
            a = h - s;
          e = Math.cos(a) * r
        } else h = Math[Pt](t[Yt], t[Wt]), r = Math.sqrt(t[Yt] * t[Yt] + t.height * t.height), a = h - (s - Math.PI / 2), e = Math.cos(a) * r;
        var o = e / 2,
          f = o * Math.cos(s),
          c = o * Math.sin(s),
          u = t.x + t[Yt] / 2 - f,
          _ = t.y + t[Wt] / 2 - c,
          l = t.x + t[Yt] / 2 + f,
          d = t.y + t.height / 2 + c;
        i = n[sf](u, _, l, d)
      } else {
        if (!(this.type = OF[Qo])) return null;
        var v = AB(this.position, t[Yt], t.height);
        v.x += t.x, v.y += t.y, this.tx && (Math.abs(this.tx) < 1 ? v.x += t[Yt] * this.tx : v.x += this.tx), this.ty && (Math.abs(this.ty) < 1 ? v.y += t[Wt] * this.ty : v.y += this.ty);
        var b = rB(v.x, v.y, t.x, t.y);
        b = Math.max(b, rB(v.x, v.y, t.x, t.y + t.height)), b = Math.max(b, rB(v.x, v.y, t.x + t[Yt], t.y + t[Wt])), b = Math.max(b, rB(v.x, v.y, t.x + t[Yt], t.y)), i = n[hf](v.x, v.y, 0, v.x, v.y, b)
      }
      var y = this[tf],
        g = this[nf];
      g && g[N] == y.length || (g = this._7K());
      for (var E = 0, x = y[N]; E < x; E++) i.addColorStop(g[E], y[E]);
      return i
    }
  };
  var pG = new xG(OF.GRADIENT_TYPE_LINEAR, [JN(2332033023), JN(1154272460), JN(1154272460), JN(1442840575)], [.1, .3, .7, .9], Math.PI / 2),
    TG = new xG(OF[qo], [JN(2332033023), JN(1154272460), JN(1154272460), JN(1442840575)], [.1, .3, .7, .9], 0),
    mG = (new xG(OF[qo], [JN(1154272460), JN(1442840575)], [.1, .9], 0), new xG(OF[Qo], [JN(2298478591), JN(1156509422), JN(1720223880), JN(1147561574)], [.1, .3, .7, .9], 0, -.3, -.3)),
    wG = [JN(0), JN(4294901760), JN(4294967040), JN(4278255360), JN(4278250239), JN(4278190992), JN(4294901958), JN(0)],
    OG = [0, .12, .28, .45, .6, .75, .8, 1],
    AG = new xG(OF[qo], wG, OG),
    IG = new xG(OF[qo], wG, OG, Math.PI / 2),
    SG = new xG(OF.GRADIENT_TYPE_RADIAL, wG, OG);
  xG.LINEAR_GRADIENT_VERTICAL = pG, xG.LINEAR_GRADIENT_HORIZONTAL = TG, xG[rf] = mG, xG[af] = AG, xG[ of ] = IG, xG[ff] = SG;
  var MG = oi,
    kG = ei,
    CG = cf,
    LG = ci,
    RG = uf,
    PG = _f;
  OF.SEGMENT_MOVE_TO = MG, OF[lf] = kG, OF[df] = CG, OF.SEGMENT_CURVE_TO = LG, OF.SEGMENT_ARC_TO = RG, OF[vf] = PG;

  function DG(t, i) {
    this.id = ++TN, HN(t) ? this[Ns] = t : (this.type = t, this.points = i)
  }
  DG[_] = {
    toJSON: function () {
      var t = {
        type: this[Oi],
        points: this[Ns]
      };
      return this[bf] && (t[bf] = !0), t
    },
    parseJSON: function (t) {
      this[Oi] = t[Oi], this[Ns] = t[Ns], this[bf] = t.invalidTerminal
    },
    points: null,
    type: kG,
    clone: function () {
      return new DG(this[Oi], this[Ns] ? cN(this[Ns]) : null)
    },
    move: function (t, i) {
      if (this.points)
        for (var n = 0, e = this[Ns][N]; n < e; n++) {
          var s = this[Ns][n];
          wF[yf](s) && (this[Ns][n] += n % 2 == 0 ? t : i)
        }
    }
  }, qN(DG.prototype, {
    lastPoint: {
      get: function () {
        return this[Oi] == RG ? {
          x: this[pa],
          y: this[Ta]
        } : {
          x: this.points[this.points.length - 2],
          y: this[Ns][this[Ns][N] - 1]
        }
      }
    },
    firstPoint: {
      get: function () {
        return {
          x: this[Ns][0],
          y: this.points[1]
        }
      }
    }
  }), wF[gf] = DG;
  sB[Ef] = Hr;
  var NG = function (t) {
    this[oo] = new yB, this._hB = t || []
  };

  function BG(t, i, n) {
    return {
      x: t.x + (i.x - t.x) * n,
      y: t.y + (i.y - t.y) * n
    }
  }

  function FG(t, i, n, e, s) {
    e = e || sB[Ef];
    var h = function (t, i, n, e) {
      var s = t[N];
      if (s && !(s < 0)) {
        e = e || 1;
        for (var h, r, a = 0; a++ < s;)
          if ((h = t[xf](a, 0)) && !(e < (r = rB(i, n, h.x, h.y)))) {
            for (var o = 0; o++ < e;)
              if (h = t[xf](a + o, 0)) {
                var f = rB(i, n, h.x, h.y);
                if (r <= f) {
                  a += o;
                  break
                }
                r = f
              } for (var c = a, u = t.length - 1, _ = 0, l = (a = 0, t._hB[N]); a < l; a++)
              if (c < (_ += t._hB[a]._kV || 0)) {
                u = a;
                break
              } return h[N] = c, h[Ji] = u, h
          }
      }
    }(t, i, n, s);
    if (h) {
      i = h.x, n = h.y;
      var r = t._hB,
        a = h[Ji],
        o = a == r[N] - 1,
        f = r[a],
        c = r.slice(0);
      if (f.type == kG || f.type == PG)
        if (pf == e) c[m](a, 0, new DG(kG, [h.x, h.y]));
        else {
          var u = r[a - 1].lastPoint,
            _ = f[Ea],
            l = BG(u, h, v = rB(u.x, u.y, i, n) / rB(u.x, u.y, _.x, _.y)),
            d = BG(h, _, v);
          c[m](a, 1, new DG(CG, [l.x, l.y, i, n]), new DG(CG, f[bf] ? [d.x, d.y] : [d.x, d.y, _.x, _.y]))
        }
      else if (hi in h && pf != e) {
        var v = h.t;
        if (f[Oi] == LG) {
          u = r[a - 1].lastPoint, _ = {
            x: f[Ns][0],
            y: f[Ns][1]
          };
          var b = {
              x: f[Ns][2],
              y: f[Ns][3]
            },
            y = {
              x: f[Ns][4],
              y: f.points[5]
            },
            g = (l = BG(u, _, v), d = BG(_, b, v), BG(b, y, v)),
            E = BG(l, d, v),
            x = BG(d, g, v);
          c.splice(a, 1, new DG(LG, [l.x, l.y, E.x, E.y, i, n]), new DG(LG, f[bf] ? [x.x, x.y, g.x, g.y] : [x.x, x.y, g.x, g.y, y.x, y.y]))
        } else f[Oi] == CG && (u = r[a - 1][xa], _ = {
          x: f.points[0],
          y: f[Ns][1]
        }, b = {
          x: f[Ns][2],
          y: f[Ns][3]
        }, l = BG(u, _, v), d = BG(_, b, v), c[m](a, 1, new DG(CG, [l.x, l.y, i, n]), new DG(CG, f[bf] ? [d.x, d.y] : [d.x, d.y, b.x, b.y])))
      } else {
        _ = f[xa];
        c[m](a, 1, new DG(kG, [i, n]), new DG(kG, [_.x, _.y]))
      }
      return {
        atEnd: o,
        index: a,
        isCurve: pf !== e,
        segments: c
      }
    }
  }

  function GG(t, i, n) {
    this._11(t, i, n)
  }

  function $G(t, i, n) {
    return new GG(t, i, n)
  }

  function YG(t, i, n) {
    return (n = n || sB[Tf]) == OF[mf] ? t * i : n == OF.BLEND_MODE_DARKEN ? Math.min(t, i) : n == OF.BLEND_MODE_COLOR_BURN ? 1 - (1 - i) / t : n == OF[wf] ? t + i - 1 : n == OF.BLEND_MODE_LIGHTEN ? Math.max(t, i) : n == OF[Of] ? t + i - t * i : i
  }
  NG[_] = {
    toJSON: function () {
      var i = [];
      return this._hB.forEach(function (t) {
        i[M](t[Af]())
      }), i
    },
    parseJSON: function (t) {
      var i = this._hB;
      t.forEach(function (t) {
        i.push(new DG(t[Oi], t[Ns]))
      })
    },
    clear: function () {
      this._hB[N] = 0, this[oo].clear(), this._kV = 0, this._6W = !0, this._hB[If] = null
    },
    _f7: !0,
    _7M: function (t, i) {
      this._f7 && 0 === this._hB[N] && t != MG && this._hB.push(new DG(MG, [0, 0])), this._hB[M](new DG(t, i)), this._6W = !0
    },
    add: function (t, i) {
      uN(this._hB, t, i), this._6W = !0
    },
    removePathSegment: function (t) {
      if (t >= this._hB[N]) return !1;
      this._hB.splice(t, 1), this._6W = !0
    },
    moveTo: function (t, i) {
      this._7M(MG, [t, i])
    },
    lineTo: function (t, i) {
      this._7M(kG, [t, i])
    },
    quadTo: function (t, i, n, e) {
      this._7M(CG, [t, i, n, e])
    },
    curveTo: function (t, i, n, e, s, h) {
      this._7M(LG, [t, i, n, e, s, h])
    },
    arcTo: function (t, i, n, e, s) {
      this._7M(RG, [t, i, n, e, s])
    },
    closePath: function () {
      this._7M(PG)
    },
    _8R: function (t, i, n, e, s) {
      if (e[Sf]) {
        if (n == OF[zr]) {
          if (!e[Mf]) return;
          return t[Po] = e[Sf], t[Do] = e[Mf] * i, t[No] = (e[kf] || 0) * i, void(t[Bo] = (e[Cf] || 0) * i)
        }
        if (n == OF[Lf]) {
          if (!e[Rf]) return;
          t[Da] = e.selectionColor;
          var h = s.lineWidth || 0;
          s[Pf] && (h += 2 * s[Pf]), t[Pa] = e[Rf] + h, this._n5(t), t[Za]()
        }
      }
    },
    _6W: !0,
    _hB: null,
    _kV: 0,
    lineCap: Br,
    lineJoin: or,
    draw: function (t, i, n, e, s) {
      t[Df] = n[Df] || this[Df], t[Nf] = n[Nf] || this.lineJoin, e && (s = s || n, this._8R(t, i, s[Bf], s, n));
      var h = e && s[Bf] == OF.SELECTION_TYPE_SHADOW;
      n[Ff] && (this._n5(t), t[Pa] = n.lineWidth + 2 * (n.outline || 0), t[Da] = n.outlineStyle, t[Za](), h && (h = !1, t.shadowColor = Gf)), t[Pa] = 0, this._n5(t), n.fillColor && (t[Ba] = n[to] || n[$f], t[Va]()), n[Yf] && (t[Ba] = n[Wf] || n[Yf], t[Va]()), n[Pa] && (t[Pa] = n[Pa], n.lineDash && (n[Uf] && (t[Da] = n[Uf], t.stroke(), h && (t.shadowColor = Gf)), t[Df] = n[Hf] || t.lineCap, t[Nf] = n[Vf] || t[Nf], t[jf] = n.lineDash, t[Xf] = n.lineDashOffset), t[Da] = n[to] || n[Da], t[Za](), t.lineDash = [])
    },
    _n5: function (t) {
      var i, n, e = this._hB.__kLSegments || this._hB;
      t[Ua]();
      for (var s = 0, h = e[N]; s < h; s++) i = e[s], eG._n5(t, i, n), n = i
    },
    invalidate: function () {
      this._6W = !0
    },
    validate: function () {
      if (this._6W = !1, this[oo].clear(), (this._kV = 0) != this._hB[N])
        for (var t, i, n = this._hB, e = 1, s = n[0], h = s, r = n[N]; e < r; e++)(t = n[e])[Oi] == MG ? h = t : (eG._66(this[oo], t, s, h), i = eG._68(t, s, h), t._kV = i, this._kV += i), s = t
    },
    getBounds: function (t, i) {
      if (this._6W && this[ro](), i = i || new yB, t) {
        var n = t / 2;
        i.set(this.bounds.x - n, this[oo].y - n, this.bounds[Yt] + t, this[oo][Wt] + t)
      } else i.set(this.bounds.x, this[oo].y, this[oo][Yt], this[oo].height);
      return i
    },
    hitTest: function (t, i, n, e, s, h) {
      return function (t, i, n, e, s, h) {
        if (n = n || 0, !(s = s || 0) && !h) return !1;
        if (!e && !this[ho](s)[Zt](t, i, n)) return !1;
        var r = Math[or](2 * n) || 1,
          a = DF(r, r),
          o = (a.canvas, -t + n),
          f = -i + n;
        if (a.setTransform(1, 0, 0, 1, o, f), a[Zf]) return a[Pa] = (s || 0) + 2 * n, this._n5(a), !(!s || !a[Zf](n, n)) || !!h && a[zf](n, n);
        this._n5(a), s && a[Za](), h && a[Va]();
        var c = FF(a, 0, 0, r, r);
        if (!c) return !1;
        for (var u = (c = c[Ki])[N] / 4; 0 < u;) {
          if (0 < c[4 * u - 1]) return !0;
          --u
        }
        return !1
      }.call(this, t, i, n, e, s, h)
    },
    toSegments: function () {
      return [][B](this._hB)
    },
    generator: function (t, i, n, e, s) {
      return function (t, i, n, e, s) {
        this._6W && this.validate();
        var h = s ? this[ho](s) : this[oo],
          o = n / h[Yt],
          f = t - o * h.x,
          c = e / h.height,
          u = i - c * h.y,
          r = this._hB,
          _ = [];
        return aN(r, function (t) {
          var i = t[l](),
            n = i[Ns];
          if (n && n[N]) {
            for (var e = n.length, s = [], h = 0; h < e; h++) {
              var r = n[h],
                a = n[++h];
              r = o * r + f, a = c * a + u, s.push(r), s.push(a)
            }
            i[Ns] = s
          }
          _.push(i)
        }, this), new NG(_)
      }.call(this, t, i, n, e, s)
    },
    getLocation: function (t, i) {
      return qF[p](this, t, i || 0)
    }
  }, qN(NG[_], {
    segments: {
      get: function () {
        return this._hB
      },
      set: function (t) {
        this[St](), this._hB = t
      }
    },
    length: {
      get: function () {
        return this._6W && this[ro](), this._kV
      }
    },
    _empty: {
      get: function () {
        return 0 == this._hB[N]
      }
    }
  }), GG[_] = {
    _11: function (t, i, n) {
      var e, s, h, r, a, o = t[N],
        f = 0,
        c = 0;
      for (a = 0; a < o; a += 4)
        if (0 < t[a + 3]) {
          e = (a + 4) / i / 4 | 0;
          break
        } for (a = o - 4; 0 <= a; a -= 4)
        if (0 < t[a + 3]) {
          s = (a + 4) / i / 4 | 0;
          break
        } for (f = 0; f < i; f++) {
        for (c = e; c < s; c++)
          if (0 < t[c * i * 4 + 4 * f + 3]) {
            h = f;
            break
          } if (0 <= h) break
      }
      for (f = i - 1; 0 <= f; f--) {
        for (c = e; c < s; c++)
          if (0 < t[c * i * 4 + 4 * f + 3]) {
            r = f;
            break
          } if (0 <= r) break
      }
      this._x = h, this._y = e, this[Lo] = r - h + 1, this._height = s - e + 1, this._kG = new yB(h, e, this[Lo], this[Ro]), this[Kf] = this._width * this._height, this[Jf] = i, this[Qf] = t
    },
    _eP: function (t, i) {
      return this[Qf][4 * (t + this._x + (this._y + i) * this[Jf]) + 3]
    },
    _j4: function (t, i, n) {
      (!n || n <= 1) && (n = 1), n |= 0, t = Math[or](t - this._x) - n, i = Math[or](i - this._y) - n, n += n;
      for (var e = t, s = i; s < i + n;) {
        for (e = t; e < t + n;) {
          if (this._eP(e, s)) return !0;
          ++e
        }++s
      }
      return !1
    }
  }, OF[qf] = tc, OF[mf] = ic, OF.BLEND_MODE_COLOR_BURN = nc, OF[wf] = ec, OF[sc] = hc, OF[Of] = rc, OF[ac] = oc, sB[Tf] = OF[wf];
  var WG = function (t, i, n) {
    this._k6 = t, this[Wa] = i || 1, this._j2 = n
  };
  WG.prototype = {
    scale: 1,
    _k6: null,
    _k9: null,
    _j2: !0,
    _n5: function (t, i, n) {
      if ((i = i && function (t) {
          if (Z == t[0]) {
            if (3 == (t = t[Xn](1)).length) t = t[0] + t[0] + t[1] + t[1] + t[2] + t[2];
            else if (6 != t.length) return;
            return [(t = parseInt(t, 16)) >> 16 & 255, t >> 8 & 255, 255 & t]
          }
          if (/^rgb/i.test(t)) {
            var i = t.indexOf(fc),
              n = t[b](Q);
            if (i < 0 || n < i) return;
            if ((t = (t = t[Xn](i + 1, n))[G](J))[N] < 3) return;
            return [parseInt(t[0]), parseInt(t[1]), parseInt(t[2]), 3 == t[N] ? 255 : parseInt(t[3])]
          }
          wF[Xo]("color format error, [" + t + cc)
        }(i)) && !1 !== this._j2) {
        this._k6 instanceof Image && ((e = PF()).width = this._k6.width, e[Wt] = this._k6[Wt], e.g[Mo](this._k6, 0, 0, this._k6[Yt], this._k6[Wt]), this._k6 = e), this._k9 || (this._k9 = {});
        var e, s = i + n;
        if ((e = this._k9[s]) || ((e = function (t, i, n) {
            var e = FF(t.g, 0, 0, t[Yt], t[Wt]);
            if (e) {
              var s = e[Ki];
              if (n instanceof Function) s = n(t, s, i) || s;
              else {
                var h = i[0] / 255,
                  r = i[1] / 255,
                  a = i[2] / 255;
                if (n == OF.BLEND_MODE_GRAY)
                  for (var o = 0, f = s[N]; o < f; o += 4) {
                    var c = 77 * s[o] + 151 * s[o + 1] + 28 * s[o + 2] >> 8;
                    s[o] = c * h | 0, s[o + 1] = c * r | 0, s[o + 2] = c * a | 0
                  } else
                    for (o = 0, f = s[N]; o < f; o += 4) s[o] = 255 * YG(h, s[o] / 255, n) | 0, s[o + 1] = 255 * YG(r, s[o + 1] / 255, n) | 0, s[o + 2] = 255 * YG(a, s[o + 2] / 255, n) | 0
              }
              return (t = PF(t[Yt], t[Wt])).g[uc](e, 0, 0), t
            }
          }(this._k6, i, n)) || (this._j2 = !1), this._k9[s] = e || this._k6), e)
          if (ON) try {
            t[Mo](e, 0, 0)
          } catch (t) {} else t.drawImage(e, 0, 0)
      } else t.drawImage(this._k6, 0, 0)
    }
  };

  function UG(t, i, n, e, s, h, r, a, o) {
    this._mT = function (t, i, n, e, s, h, r, a, o) {
      if (vB(t, i, n, e, a, o)) return null;
      var f, c, u = new DG(kG, [t + n - s, i]),
        _ = new DG(CG, [t + n, i, t + n, i + h]),
        l = new DG(kG, [t + n, i + e - h]),
        d = new DG(CG, [t + n, i + e, t + n - s, i + e]),
        v = new DG(kG, [t + s, i + e]),
        b = new DG(CG, [t, i + e, t, i + e - h]),
        y = new DG(kG, [t, i + h]),
        g = new DG(CG, [t, i, t + s, i]),
        E = (new DG(PG), [u, _, l, d, v, b, y, g]),
        x = new yB(t + s, i + h, n - s - s, e - h - h);
      c = a < t ? (f = xB, 5) : t + n < a ? (f = pB, 1) : (f = ci, 0), o < i ? f == xB && (c = 7) : i + e < o ? f == pB ? c = 3 : ci == f && (c = 4) : f == xB ? c = 6 : f == pB && (c = 2);
      var p = function (t, i, n, e, s, h, r, a, o, f, c) {
          var u = a / 2;
          switch (h = h || 1e-4, r = r || 1e-4, t) {
            case 7:
              var _ = [i, n + r, i, n, i + h, n],
                l = i + h,
                d = n + r;
              return HG(t, _, l, d, i, n, e, s, h, r, a, o, f, c);
            case 5:
              return HG(t, _ = [i + h, n + s, i, n + s, i, n + s - r], l = i + h, d = n + s - r, i, n, e, s, h, r, a, o, f, c);
            case 3:
              return HG(t, _ = [i + e, n + s - r, i + e, n + s, i + e - h, n + s], l = i + e - h, d = n + s - r, i, n, e, s, h, r, a, o, f, c);
            case 1:
              return HG(t, _ = [i + e - h, n, i + e, n, i + e, n + r], l = i + e - h, d = n + r, i, n, e, s, h, r, a, o, f, c);
            case 0:
              return function (t, i, n, e, s, h, r, a) {
                var o, f;
                if (t + e <= r - h) o = {
                  y: i,
                  x: r - h,
                  _mTNO: 0
                };
                else {
                  o = {
                    y: i + s,
                    x: Math.max(t, r - h)
                  };
                  var c = [t, i + s, t, i, t + e, i],
                    u = new cB(r, a, o.x, o.y);
                  (o = u._$g(c)) ? (HN(o) && (o = o[0].t > o[1].t ? o[0] : o[1]), (_ = (_ = VG(c, [o]))[0]) && (o._mT = new DG(CG, _[C](2))), o[_c] = 7) : o = {
                    y: i,
                    x: t + e,
                    _mTNO: 0
                  }
                }
                if (r + h <= t + n - e) f = {
                  y: i,
                  x: r + h,
                  _mTNO: 0
                };
                else {
                  f = {
                    y: i + s,
                    x: Math.min(t + n, r + h)
                  };
                  var _, l = [t + n - e, i, t + n, i, t + n, i + s];
                  (f = (u = new cB(r, a, f.x, f.y))._$g(l)) ? (HN(f) && (f = f[0].t < f[1].t ? f[0] : f[1]), (_ = VG(l, [f])) && _[_.length - 1] && (f._mT = new DG(CG, _[_[N] - 1][C](2))), f[_c] = 1) : f = {
                    y: i,
                    x: t + n - e,
                    _mTNO: 0
                  }
                }
                return [o, f]
              }(i, n, e, h, r, u, o, f);
            case 2:
              return function (t, i, n, e, s, h, r, a, o) {
                var f, c;
                if (i + h <= o - r) f = {
                  x: t + n,
                  y: o - r,
                  _mTNO: 2
                };
                else {
                  f = {
                    x: t + n - s,
                    y: Math.max(i, o - r)
                  };
                  var u = [t + n - s, i, t + n, i, t + n, i + h],
                    _ = new cB(a, o, f.x, f.y);
                  (f = _._$g(u)) ? (HN(f) && (f = f[0].t > f[1].t ? f[0] : f[1]), (l = (l = VG(u, [f]))[0]) && (f._mT = new DG(CG, l[C](2))), f[_c] = 1) : f = {
                    x: t + n,
                    y: i + h,
                    _mTNO: 2
                  }
                }
                if (o + r <= i + e - h) c = {
                  x: t + n,
                  y: o + r,
                  _mTNO: 2
                };
                else {
                  c = {
                    x: t + n - s,
                    y: Math.min(i + e, o + r)
                  };
                  var l, d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
                  (c = (_ = new cB(a, o, c.x, c.y))._$g(d)) ? (HN(c) && (c = c[0].t < c[1].t ? c[0] : c[1]), (l = VG(d, [c]))[1] && (c._mT = new DG(CG, l[1].slice(2))), c[_c] = 3) : c = {
                    x: t + n,
                    y: i + e - h,
                    _mTNO: 2
                  }
                }
                return [f, c]
              }(i, n, e, s, h, r, u, o, f);
            case 4:
              return function (t, i, n, e, s, h, r, a, o) {
                var f, c;
                if (t + s <= a - r) c = {
                  y: i + e,
                  x: a - r,
                  _mTNO: 4
                };
                else {
                  c = {
                    y: i + e - h,
                    x: Math.max(t, a - r)
                  };
                  var u = [t + s, i + e, t, i + e, t, i + e - h],
                    _ = new cB(a, o, c.x, c.y);
                  (c = _._$g(u)) ? (HN(c) && (c = c[0].t < c[1].t ? c[0] : c[1]), (l = (l = VG(u, [c]))[l[N] - 1]) && (c._mT = new DG(CG, l.slice(2))), c[_c] = 5) : c = {
                    y: i + e,
                    x: t + s,
                    _mTNO: 4
                  }
                }
                if (a + r <= t + n - s) f = {
                  y: i + e,
                  x: a + r,
                  _mTNO: 4
                };
                else {
                  f = {
                    y: i + e - h,
                    x: Math.min(t + n, a + r)
                  };
                  var l, d = [t + n, i + e - h, t + n, i + e, t + n - s, i + e];
                  (f = (_ = new cB(a, o, f.x, f.y))._$g(d)) ? (HN(f) && (f = f[0].t > f[1].t ? f[0] : f[1]), (l = VG(d, [f]))[0] && (f._mT = new DG(CG, l[0][C](2))), f[_c] = 3) : f = {
                    y: i + e,
                    x: t + n - s,
                    _mTNO: 4
                  }
                }
                return [f, c]
              }(i, n, e, s, h, r, u, o, f);
            case 6:
              return function (t, i, n, e, s, h, r, a) {
                var o, f;
                if (i + s <= a - h) f = {
                  x: t,
                  y: a - h,
                  _mTNO: 6
                };
                else {
                  f = {
                    x: t + e,
                    y: Math.max(i, a - h)
                  };
                  var c = [t, i + s, t, i, t + e, i],
                    u = new cB(r, a, f.x, f.y);
                  (f = u._$g(c)) ? (HN(f) && (f = f[0].t < f[1].t ? f[0] : f[1]), (_ = (_ = VG(c, [f]))[_[N] - 1]) && (f._mT = new DG(CG, _[C](2)))) : f = {
                    x: t,
                    y: i + s
                  }, f._mTNO = 7
                }
                if (a + h <= i + n - s) o = {
                  x: t,
                  y: a + h,
                  _mTNO: 6
                };
                else {
                  o = {
                    x: t + e,
                    y: Math.min(i + n, a + h)
                  };
                  var _, l = [t + e, i + n, t, i + n, t, i + n - s];
                  (o = (u = new cB(r, a, o.x, o.y))._$g(l)) ? (HN(o) && (o = o[0].t > o[1].t ? o[0] : o[1]), (_ = VG(l, [o]))[0] && (o._mT = new DG(CG, _[0][C](2))), o[_c] = 5) : o = {
                    x: t,
                    y: i + n - s,
                    _mTNO: 6
                  }
                }
                return [o, f]
              }(i, n, s, h, r, u, o, f)
          }
        }(c, t, i, n, e, s, h, r, a, o, x),
        T = p[0],
        m = p[1],
        w = new NG,
        O = w._hB;
      O[M](new DG(MG, [T.x, T.y])), O[M](new DG(kG, [a, o])), O[M](new DG(kG, [m.x, m.y])), m._mT && (O[M](m._mT), m[_c]++);
      for (var A = m[_c] % 8, I = T._mTNO; O[M](E[A]), ++A, (A %= 8) != I;);
      return T._mT && O[M](T._mT), w[lc](), w
    }(t, i, n, e, s, h, r, a, o)
  }

  function HG(t, i, n, e, s, h, r, a, o, f, c, u, _, l) {
    var d = new cB(u, _, n, e),
      v = new cB(i[0], i[1], i[4], i[5])._3U(d, c),
      b = v[0],
      y = v[1];
    if (b._rest !== k) {
      b._mTNO = (t - 1) % 8, y[_c] = (t + 1) % 8;
      var g = b[$t];
      7 == t ? (b.y = h + f + Math.min(l.height, g), y.x = s + o + Math.min(l[Yt], g)) : 5 == t ? (b.x = s + o + Math.min(l[Yt], g), y.y = h + a - f - Math.min(l[Wt], g)) : 3 == t ? (b.y = h + a - f - Math.min(l[Wt], g), y.x = s + r - o - Math.min(l.width, g)) : 1 == t && (b.x = s + r - o - Math.min(l[Yt], g), y.y = h + f + Math.min(l[Wt], g))
    } else {
      d._nY(d._o4, d._o5, b.x, b.y), b = d._$g(i), d._nY(d._o4, d._o5, y.x, y.y);
      var E = VG(i, [b, y = d._$g(i)]),
        x = E[0],
        p = E[2];
      b[_c] = t, y[_c] = t, b._mT = new DG(CG, x[C](2)), y._mT = new DG(CG, p.slice(2))
    }
    return [b, y]
  }

  function VG(t, i) {
    for (var n, e, s, h, r, a, o = t[0], f = t[1], c = t[2], u = t[3], _ = t[4], l = t[5], d = [], v = 0; v < i[N]; v++) 0 != (a = (r = i[v]).t) && 1 != a ? (n = o + (c - o) * a, e = f + (u - f) * a, s = c + (_ - c) * a, h = u + (l - u) * a, d[M]([o, f, n, e, r.x, r.y]), o = r.x, f = r.y, c = s, u = h) : d[M](null);
    return s !== k && d[M]([r.x, r.y, s, h, _, l]), d
  }
  var jG = {
    server: {
      draw: function (t) {
        t[Ga](), t.translate(0, 0), t.beginPath(), t[Ia](0, 0), t[ja](40, 0), t.lineTo(40, 40), t[ja](0, 40), t.closePath(), t[dc](), t[Ya](0, 0), t[Ya](0, 0), t[Wa](1, 1), t[Ya](0, 0), t[Da] = Gf, t[Df] = Br, t.lineJoin = Ur, t[vc] = 4, t.save(), t.save(), t[Ka](), t.save(), t[Ka](), t.save(), t[Ka](), t[Ga](), t.restore(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t.save(), t[Ka](), t[Ga](), t.restore(), t[Ga](), t[Ka](), t.save(), t.restore(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ka](), t[Ga]();
        var i = t[sf](6.75, 3.9033, 30.5914, 27.7447);
        i[bc](.0493, yc), i.addColorStop(.0689, gc), i[bc](.0939, Ec), i[bc](.129, xc), i[bc](.2266, pc), i[bc](.2556, Tc), i[bc](.2869, mc), i[bc](.3194, wc), i[bc](.3525, Oc), i.addColorStop(.3695, Ac), i.addColorStop(.5025, Ic), i.addColorStop(.9212, Sc), i.addColorStop(1, Mc), t[Ba] = i, t[Ua](), t[Ia](25.677, 4.113), t[Ma](25.361, 2.4410000000000007, 23.364, 2.7940000000000005, 22.14, 2.7990000000000004), t[Ma](19.261, 2.813, 16.381, 2.8260000000000005, 13.502, 2.8400000000000003), t[Ma](12.185, 2.846, 10.699000000000002, 2.652, 9.393, 2.8790000000000004), t[Ma](9.19, 2.897, 8.977, 2.989, 8.805, 3.094), t[Ma](8.084999999999999, 3.5109999999999997, 7.436999999999999, 4.1259999999999994, 6.776, 4.63), t.bezierCurveTo(5.718999999999999, 5.436, 4.641, 6.22, 3.6029999999999998, 7.05), t[Ma](4.207, 6.5889999999999995, 21.601999999999997, 36.579, 21.028, 37.307), t[Ma](22.019, 36.063, 23.009999999999998, 34.819, 24.000999999999998, 33.575), t[Ma](24.587999999999997, 32.84, 25.589999999999996, 31.995000000000005, 25.593999999999998, 30.983000000000004), t[Ma](25.595999999999997, 30.489000000000004, 25.598, 29.994000000000003, 25.601, 29.500000000000004), t[Ma](25.612, 26.950000000000003, 25.622, 24.400000000000006, 25.633, 21.85), t[Ma](25.657, 16.318, 25.680999999999997, 10.786000000000001, 25.704, 5.253), t.bezierCurveTo(25.706, 4.885, 25.749, 4.478, 25.677, 4.113), t.bezierCurveTo(25.67, 4.077, 25.697, 4.217, 25.677, 4.113), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t[Ga](), t.fillStyle = kc, t[Ua](), t[Ia](19.763, 6.645), t.bezierCurveTo(20.002000000000002, 6.643999999999999, 20.23, 6.691999999999999, 20.437, 6.778), t[Ma](20.644000000000002, 6.864999999999999, 20.830000000000002, 6.991, 20.985, 7.146999999999999), t.bezierCurveTo(21.14, 7.302999999999999, 21.266, 7.488999999999999, 21.352999999999998, 7.696999999999999), t.bezierCurveTo(21.438999999999997, 7.903999999999999, 21.487, 8.133, 21.487, 8.372), t[ja](21.398, 36.253), t.bezierCurveTo(21.397, 36.489, 21.349, 36.713, 21.262, 36.917), t.bezierCurveTo(21.174, 37.121, 21.048000000000002, 37.305, 20.893, 37.458), t[Ma](20.738, 37.611, 20.553, 37.734, 20.348, 37.818999999999996), t[Ma](20.141, 37.903999999999996, 19.916, 37.95099999999999, 19.679, 37.949), t[ja](4.675, 37.877), t[Ma](4.4399999999999995, 37.876000000000005, 4.216, 37.827000000000005, 4.012, 37.741), t[Ma](3.8089999999999997, 37.653999999999996, 3.6249999999999996, 37.528999999999996, 3.4719999999999995, 37.376), t[Ma](3.3179999999999996, 37.221, 3.1939999999999995, 37.037, 3.1079999999999997, 36.833999999999996), t[Ma](3.022, 36.629999999999995, 2.9739999999999998, 36.406, 2.9739999999999998, 36.172), t.lineTo(2.924, 8.431), t[Ma](2.923, 8.192, 2.971, 7.964, 3.057, 7.758), t.bezierCurveTo(3.143, 7.552, 3.267, 7.365, 3.4219999999999997, 7.209), t.bezierCurveTo(3.5769999999999995, 7.052999999999999, 3.76, 6.925, 3.965, 6.837), t.bezierCurveTo(4.17, 6.749, 4.396, 6.701, 4.633, 6.7), t[ja](19.763, 6.645), t[lc](), t[Va](), t[Za](), t.restore(), t[Ka](), t[Ga](), t[Ba] = Cc, t[Ua](), t.arc(12.208, 26.543, 2.208, 0, 6.283185307179586, !0), t[lc](), t.fill(), t[Za](), t[Ka](), t.save(), t[Ba] = kc, t.beginPath(), t.arc(12.208, 26.543, 1.876, 0, 6.283185307179586, !0), t.closePath(), t.fill(), t[Za](), t[Ka](), t[Ga](), t[Ba] = Cc, t[Ua](), t.moveTo(19.377, 17.247), t.bezierCurveTo(19.377, 17.724, 18.991999999999997, 18.108999999999998, 18.516, 18.108999999999998), t[ja](5.882, 18.108999999999998), t[Ma](5.404999999999999, 18.108999999999998, 5.02, 17.723, 5.02, 17.247), t.lineTo(5.02, 11.144), t.bezierCurveTo(5.02, 10.666, 5.406, 10.281, 5.882, 10.281), t[ja](18.516, 10.281), t[Ma](18.993, 10.281, 19.377, 10.666, 19.377, 11.144), t[ja](19.377, 17.247), t[lc](), t[Va](), t.stroke(), t.restore(), t[Ga](), t[Ga](), t[Ba] = kc, t[Ua](), t[Ia](18.536, 13.176), t[Ma](18.536, 13.518, 18.261000000000003, 13.794, 17.919, 13.794), t.lineTo(6.479, 13.794), t[Ma](6.1370000000000005, 13.794, 5.861, 13.518, 5.861, 13.176), t[ja](5.861, 11.84), t[Ma](5.861, 11.498, 6.137, 11.221, 6.479, 11.221), t[ja](17.918, 11.221), t[Ma](18.259999999999998, 11.221, 18.535, 11.497, 18.535, 11.84), t[ja](18.535, 13.176), t[lc](), t.fill(), t[Za](), t[Ka](), t.save(), t[Ba] = kc, t[Ua](), t.moveTo(18.536, 16.551), t.bezierCurveTo(18.536, 16.892999999999997, 18.261000000000003, 17.168999999999997, 17.919, 17.168999999999997), t[ja](6.479, 17.168999999999997), t[Ma](6.1370000000000005, 17.168999999999997, 5.861, 16.892999999999997, 5.861, 16.551), t.lineTo(5.861, 15.215999999999998), t[Ma](5.861, 14.872999999999998, 6.137, 14.596999999999998, 6.479, 14.596999999999998), t.lineTo(17.918, 14.596999999999998), t[Ma](18.259999999999998, 14.596999999999998, 18.535, 14.872999999999998, 18.535, 15.215999999999998), t[ja](18.535, 16.551), t[lc](), t.fill(), t.stroke(), t[Ka](), t[Ka](), t[Ka]()
      }
    },
    exchanger2: {
      draw: function (t) {
        t[Ga](), t.translate(0, 0), t[Ua](), t[Ia](0, 0), t[ja](40, 0), t[ja](40, 40), t[ja](0, 40), t[lc](), t[dc](), t.translate(0, 0), t[Ya](0, 0), t[Wa](1, 1), t[Ya](0, 0), t.strokeStyle = Gf, t.lineCap = Br, t.lineJoin = Ur, t[vc] = 4, t.save(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t.save(), t[Ka](), t.save(), t.restore(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t.restore(), t.save();
        var i = t.createLinearGradient(.4102, 24.3613, 39.5898, 24.3613);
        i[bc](0, yc), i.addColorStop(.0788, pc), i[bc](.2046, Lc), i.addColorStop(.3649, Rc), i[bc](.5432, Pc), i.addColorStop(.6798, Dc), i.addColorStop(.7462, Nc), i[bc](.8508, Bc), i.addColorStop(.98, Tc), i[bc](1, Fc), t[Ba] = i, t[Ua](), t[Ia](.41, 16.649), t[Ma](.633, 19.767, .871, 20.689, 1.094, 23.807000000000002), t.bezierCurveTo(1.29, 26.548000000000002, 3.324, 28.415000000000003, 5.807, 29.711000000000002), t[Ma](10.582, 32.202000000000005, 16.477, 32.806000000000004, 21.875999999999998, 32.523), t[Ma](26.929, 32.258, 32.806, 31.197000000000003, 36.709999999999994, 27.992000000000004), t.bezierCurveTo(38.30499999999999, 26.728000000000005, 38.83599999999999, 25.103000000000005, 38.998999999999995, 23.161000000000005), t.bezierCurveTo(39.589, 16.135000000000005, 39.589, 16.135000000000005, 39.589, 16.135000000000005), t[Ma](39.589, 16.135000000000005, 3.26, 16.647, .41, 16.649), t[lc](), t[Va](), t[Za](), t[Ka](), t.save(), t[Ga](), t[Ba] = kc, t.beginPath(), t[Ia](16.4, 25.185), t.bezierCurveTo(12.807999999999998, 24.924999999999997, 9.139, 24.238, 5.857999999999999, 22.705), t.bezierCurveTo(3.175999999999999, 21.450999999999997, -.32200000000000095, 18.971999999999998, .544999999999999, 15.533999999999999), t.bezierCurveTo(1.3499999999999992, 12.335999999999999, 4.987999999999999, 10.495999999999999, 7.807999999999999, 9.428999999999998), t[Ma](11.230999999999998, 8.133999999999999, 14.911999999999999, 7.519999999999999, 18.558, 7.345999999999998), t[Ma](22.233, 7.169999999999998, 25.966, 7.437999999999998, 29.548000000000002, 8.300999999999998), t[Ma](32.673, 9.052999999999999, 36.192, 10.296, 38.343, 12.814999999999998), t[Ma](40.86600000000001, 15.768999999999998, 39.208000000000006, 19.066999999999997, 36.406000000000006, 21.043999999999997), t.bezierCurveTo(33.566, 23.046999999999997, 30.055000000000007, 24.071999999999996, 26.670000000000005, 24.676999999999996), t[Ma](23.289, 25.28, 19.824, 25.436, 16.4, 25.185), t[Ma](13.529, 24.977, 19.286, 25.396, 16.4, 25.185), t[lc](), t[Va](), t[Za](), t[Ka](), t.restore(), t[Ga](), t[Ga](), t.save(), t[Ga](), t[Ga](), t[Ba] = Gc, t.beginPath(), t.moveTo(5.21, 21.754), t[ja](8.188, 17.922), t[ja](9.53, 18.75), t[ja](15.956, 16.004), t[ja](18.547, 17.523), t[ja](12.074, 20.334), t[ja](13.464, 21.204), t[ja](5.21, 21.754), t[lc](), t.fill(), t[Za](), t.restore(), t[Ka](), t.restore(), t[Ga](), t[Ga](), t[Ga](), t.fillStyle = Gc, t[Ua](), t[Ia](17.88, 14.61), t.lineTo(9.85, 13.522), t[ja](11.703, 12.757), t[ja](7.436, 10.285), t[ja](10.783, 8.942), t.lineTo(15.091, 11.357), t.lineTo(16.88, 10.614), t[ja](17.88, 14.61), t.closePath(), t[Va](), t.stroke(), t[Ka](), t.restore(), t[Ga](), t[Ga](), t[Ba] = Gc, t.beginPath(), t[Ia](17.88, 14.61), t.lineTo(9.85, 13.522), t[ja](11.703, 12.757), t[ja](7.436, 10.285), t[ja](10.783, 8.942), t[ja](15.091, 11.357), t.lineTo(16.88, 10.614), t[ja](17.88, 14.61), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ka](), t[Ka](), t[Ga](), t[Ga](), t.save(), t[Ba] = Gc, t[Ua](), t[Ia](23.556, 15.339), t[ja](20.93, 13.879), t[ja](26.953, 11.304), t[ja](25.559, 10.567), t.lineTo(33.251, 9.909), t[ja](31.087, 13.467), t.lineTo(29.619, 12.703), t.lineTo(23.556, 15.339), t[lc](), t[Va](), t[Za](), t.restore(), t.restore(), t[Ka](), t[Ga](), t[Ga](), t[Ga](), t.fillStyle = Gc, t.beginPath(), t[Ia](30.028, 23.383), t[ja](24.821, 20.366), t.lineTo(22.915, 21.227), t.lineTo(21.669, 16.762), t[ja](30.189, 17.942), t[ja](28.33, 18.782), t[ja](33.579, 21.725), t[ja](30.028, 23.383), t[lc](), t[Va](), t[Za](), t.restore(), t.restore(), t[Ga](), t.save(), t[Ba] = Gc, t.beginPath(), t[Ia](30.028, 23.383), t.lineTo(24.821, 20.366), t[ja](22.915, 21.227), t.lineTo(21.669, 16.762), t[ja](30.189, 17.942), t[ja](28.33, 18.782), t.lineTo(33.579, 21.725), t[ja](30.028, 23.383), t.closePath(), t.fill(), t.stroke(), t[Ka](), t[Ka](), t.restore(), t[Ka](), t[Ka](), t[Ka]()
      }
    },
    exchanger: {
      draw: function (t) {
        var i;
        t[Ga](), t[Ya](0, 0), t[Ua](), t[Ia](0, 0), t[ja](40, 0), t[ja](40, 40), t[ja](0, 40), t.closePath(), t[dc](), t.translate(0, 0), t.translate(0, 0), t[Wa](1, 1), t[Ya](0, 0), t[Da] = Gf, t[Df] = Br, t[Nf] = Ur, t[vc] = 4, t.save(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t.save(), t.restore(), t[Ga](), t.restore(), t[Ga](), t[Ka](), t[Ka](), t[Ga](), (i = t.createLinearGradient(.2095, 20.7588, 39.4941, 20.7588))[bc](0, $c), i.addColorStop(.0788, Yc), i.addColorStop(.352, Wc), i[bc](.6967, Uc), i.addColorStop(.8916, Hc), i[bc](.9557, Vc), i[bc](1, jc), t[Ba] = i, t.beginPath(), t.moveTo(39.449, 12.417), t[ja](39.384, 9.424), t[Ma](39.384, 9.424, .7980000000000018, 22.264, .3710000000000022, 23.024), t.bezierCurveTo(-.026999999999997804, 23.733, .4240000000000022, 24.903000000000002, .5190000000000022, 25.647000000000002), t[Ma](.7240000000000022, 27.244000000000003, .9240000000000023, 28.841, 1.1350000000000022, 30.437), t[Ma](1.3220000000000023, 31.843, 2.7530000000000023, 32.094, 3.9620000000000024, 32.094), t[Ma](8.799000000000003, 32.092, 13.636000000000003, 32.091, 18.473000000000003, 32.089), t[Ma](23.515, 32.086999999999996, 28.556000000000004, 32.086, 33.598, 32.083999999999996), t[Ma](34.859, 32.083999999999996, 36.286, 31.979999999999997, 37.266, 31.081999999999997), t.bezierCurveTo(37.537, 30.820999999999998, 37.655, 30.535999999999998, 37.699999999999996, 30.229999999999997), t[ja](37.711, 30.316999999999997), t.lineTo(39.281, 16.498999999999995), t[Ma](39.281, 16.498999999999995, 39.467999999999996, 15.126999999999995, 39.489, 14.666999999999994), t.bezierCurveTo(39.515, 14.105, 39.449, 12.417, 39.449, 12.417), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t[Ga](), t[Ga](), t[Ga](), t.restore(), t.save(), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t.restore(), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t.save(), t[Ka](), t[Ka](), t[Ga](), (i = t[sf](19.8052, 7.7949, 19.8052, 24.7632))[bc](0, Xc), i.addColorStop(.1455, Zc), i.addColorStop(.2975, zc), i[bc](.4527, Kc), i[bc](.6099, Jc), i.addColorStop(.7687, Qc), i.addColorStop(.9268, qc), i[bc](.9754, tu), i[bc](1, iu), t[Ba] = i, t.beginPath(), t[Ia](33.591, 24.763), t[Ma](23.868000000000002, 24.754, 14.145, 24.746000000000002, 4.423000000000002, 24.738000000000003), t[Ma](3.140000000000002, 24.737000000000002, -.48799999999999777, 24.838000000000005, .3520000000000021, 22.837000000000003), t.bezierCurveTo(1.292000000000002, 20.594000000000005, 2.2330000000000023, 18.351000000000003, 3.1730000000000023, 16.108000000000004), t[Ma](4.113000000000002, 13.865000000000006, 5.054000000000002, 11.623000000000005, 5.994000000000002, 9.380000000000004), t[Ma](6.728000000000002, 7.629000000000005, 9.521000000000003, 7.885000000000004, 11.156000000000002, 7.880000000000004), t[Ma](16.974000000000004, 7.861000000000004, 22.793000000000003, 7.843000000000004, 28.612000000000002, 7.825000000000005), t[Ma](30.976000000000003, 7.818000000000005, 33.341, 7.810000000000005, 35.707, 7.803000000000004), t[Ma](36.157000000000004, 7.802000000000004, 36.609, 7.787000000000004, 37.06, 7.804000000000005), t.bezierCurveTo(37.793, 7.833000000000005, 39.389, 7.875000000000004, 39.385000000000005, 9.424000000000005), t[Ma](39.38400000000001, 9.647000000000006, 39.31, 10.138000000000005, 39.27700000000001, 10.359000000000005), t[Ma](38.81900000000001, 13.361000000000004, 38.452000000000005, 15.764000000000006, 37.99400000000001, 18.766000000000005), t[Ma](37.806000000000004, 19.998000000000005, 37.61800000000001, 21.230000000000004, 37.43000000000001, 22.462000000000007), t.bezierCurveTo(37.151, 24.271, 35.264, 24.77, 33.591, 24.763), t[lc](), t.fill(), t[Za](), t[Ka](), t[Ka](), t[Ka](), t[Ga](), t[Ga](), t[Ga](), t.fillStyle = Gc, t[Ua](), t.moveTo(10.427, 19.292), t[ja](5.735, 16.452), t[ja](12.58, 13.8), t.lineTo(12.045, 15.07), t.lineTo(20.482, 15.072), t.lineTo(19.667, 17.887), t.lineTo(11.029, 17.851), t.lineTo(10.427, 19.292), t.closePath(), t[Va](), t.stroke(), t[Ka](), t[Ka](), t.save(), t[Ga](), t.fillStyle = Gc, t[Ua](), t.moveTo(13.041, 13.042), t.lineTo(8.641, 10.73), t.lineTo(14.82, 8.474), t[ja](14.373, 9.537), t[ja](22.102, 9.479), t[ja](21.425, 11.816), t[ja](13.54, 11.85), t.lineTo(13.041, 13.042), t[lc](), t[Va](), t[Za](), t[Ka](), t.restore(), t.save(), t[Ga](), t.fillStyle = Gc, t[Ua](), t.moveTo(29.787, 16.049), t.lineTo(29.979, 14.704), t.lineTo(21.51, 14.706), t[ja](22.214, 12.147), t.lineTo(30.486, 12.116), t[ja](30.653, 10.926), t.lineTo(36.141, 13.4), t[ja](29.787, 16.049), t[lc](), t[Va](), t.stroke(), t[Ka](), t[Ka](), t[Ga](), t.save(), t.fillStyle = Gc, t[Ua](), t[Ia](28.775, 23.14), t.lineTo(29.011, 21.49), t[ja](19.668, 21.405), t[ja](20.523, 18.295), t[ja](29.613, 18.338), t[ja](29.815, 16.898), t[ja](35.832, 19.964), t.lineTo(28.775, 23.14), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ka](), t[Ka](), t.restore()
      }
    },
    cloud: {
      draw: function (t) {
        t[Ga](), t[Ua](), t[Ia](0, 0), t[ja](90.75, 0), t[ja](90.75, 62.125), t[ja](0, 62.125), t[lc](), t.clip(), t[Da] = Gf, t[Df] = Br, t[Nf] = Ur, t[vc] = 4, t.save();
        var i = t.createLinearGradient(44.0054, 6.4116, 44.0054, 51.3674);
        i.addColorStop(0, "rgba(159, 160, 160, 0.7)"), i[bc](.9726, nu), t.fillStyle = i, t[Ua](), t[Ia](57.07, 20.354), t.bezierCurveTo(57.037, 20.354, 57.006, 20.358, 56.974000000000004, 20.358), t[Ma](54.461000000000006, 14.308, 48.499, 10.049000000000001, 41.538000000000004, 10.049000000000001), t.bezierCurveTo(33.801, 10.049000000000001, 27.309000000000005, 15.316000000000003, 25.408000000000005, 22.456000000000003), t[Ma](18.988000000000007, 23.289, 14.025000000000006, 28.765000000000004, 14.025000000000006, 35.413000000000004), t[Ma](14.025000000000006, 42.635000000000005, 19.880000000000006, 48.49, 27.102000000000004, 48.49), t[Ma](29.321000000000005, 48.49, 31.407000000000004, 47.933, 33.237, 46.961), t[Ma](34.980000000000004, 49.327, 37.78, 50.867999999999995, 40.945, 50.867999999999995), t[Ma](43.197, 50.867999999999995, 45.261, 50.086, 46.896, 48.785999999999994), t[Ma](49.729, 50.78699999999999, 53.244, 51.98799999999999, 57.07, 51.98799999999999), t[Ma](66.412, 51.98799999999999, 73.986, 44.90699999999999, 73.986, 36.17099999999999), t[Ma](73.986, 27.436, 66.413, 20.354, 57.07, 20.354), t.closePath(), t.fill(), t[Za](), t[Ka](), t.restore()
      }
    },
    node: {
      width: 60,
      height: 100,
      draw: function (t) {
        t[Ga](), t[Ya](0, 0), t.beginPath(), t.moveTo(0, 0), t[ja](40, 0), t.lineTo(40, 40), t[ja](0, 40), t.closePath(), t[dc](), t[Ya](0, 0), t[Ya](0, 0), t[Wa](1, 1), t.translate(0, 0), t[Da] = Gf, t[Df] = Br, t.lineJoin = Ur, t[vc] = 4, t[Ga](), t[Ba] = eu, t.beginPath(), t[Ia](13.948, 31.075), t[ja](25.914, 31.075), t[Sa](25.914, 31.075, 25.914, 31.075), t[ja](25.914, 34.862), t[Sa](25.914, 34.862, 25.914, 34.862), t[ja](13.948, 34.862), t.quadraticCurveTo(13.948, 34.862, 13.948, 34.862), t[ja](13.948, 31.075), t.quadraticCurveTo(13.948, 31.075, 13.948, 31.075), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t.fillStyle = su, t[Ua](), t[Ia](29.679, 35.972), t[Ma](29.679, 36.675000000000004, 29.110999999999997, 37.244, 28.407999999999998, 37.244), t.lineTo(11.456, 37.244), t[Ma](10.751999999999999, 37.244, 10.183, 36.675, 10.183, 35.972), t[ja](10.183, 36.136), t[Ma](10.183, 35.431000000000004, 10.751999999999999, 34.863, 11.456, 34.863), t[ja](28.407, 34.863), t[Ma](29.11, 34.863, 29.678, 35.431, 29.678, 36.136), t[ja](29.678, 35.972), t[lc](), t[Va](), t.stroke(), t[Ka](), t[Ga](), t[Ba] = su, t[Ua](), t[Ia](.196, 29.346), t[Ma](.196, 30.301, .9690000000000001, 31.075, 1.925, 31.075), t[ja](37.936, 31.075), t[Ma](38.891, 31.075, 39.665, 30.301, 39.665, 29.346), t[ja](39.665, 27.174), t[ja](.196, 27.174), t.lineTo(.196, 29.346), t[lc](), t.fill(), t[Za](), t[Ka](), t.save(), t[Ba] = hu, t.beginPath(), t[Ia](37.937, 3.884), t[ja](1.926, 3.884), t[Ma](.97, 3.884, .19699999999999984, 4.657, .19699999999999984, 5.614), t.lineTo(.19699999999999984, 27.12), t[ja](39.666000000000004, 27.12), t[ja](39.666000000000004, 5.615), t.bezierCurveTo(39.665, 4.657, 38.892, 3.884, 37.937, 3.884), t[lc](), t[Va](), t.stroke(), t.restore(), t[Ga](), t[Ga](), t.restore(), t.save(), t.restore(), t[Ka](), t[Ga]();
        var i = t[sf](6.9609, 2.9341, 32.9008, 28.874);
        i.addColorStop(0, ru), i[bc](1, au), t[Ba] = i, t[Ua](), t.moveTo(35.788, 6.39), t[ja](4.074, 6.39), t[Ma](3.315, 6.39, 2.702, 7.003, 2.702, 7.763), t[ja](2.702, 24.616), t[ja](37.159, 24.616), t.lineTo(37.159, 7.763), t[Ma](37.159, 7.003, 36.546, 6.39, 35.788, 6.39), t[lc](), t[Va](), t[Za](), t.restore(), t.restore()
      }
    },
    group: {
      draw: function (t) {
        t.save(), t[Ya](0, 0), t[Ua](), t[Ia](0, 0), t[ja](47.75, 0), t.lineTo(47.75, 40), t[ja](0, 40), t.closePath(), t[dc](), t[Ya](0, 0), t[Ya](0, 0), t.scale(1, 1), t[Ya](0, 0), t.strokeStyle = Gf, t[Df] = Br, t[Nf] = Ur, t[vc] = 4, t.save(), t.save(), t[Ba] = eu, t[Ua](), t.moveTo(10.447, 26.005), t[ja](18.847, 26.005), t[Sa](18.847, 26.005, 18.847, 26.005), t[ja](18.847, 28.663), t.quadraticCurveTo(18.847, 28.663, 18.847, 28.663), t.lineTo(10.447, 28.663), t[Sa](10.447, 28.663, 10.447, 28.663), t.lineTo(10.447, 26.005), t[Sa](10.447, 26.005, 10.447, 26.005), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t[Ba] = su, t[Ua](), t[Ia](21.491, 29.443), t.bezierCurveTo(21.491, 29.935000000000002, 21.094, 30.338, 20.597, 30.338), t[ja](8.698, 30.338), t[Ma](8.201, 30.338, 7.8020000000000005, 29.936, 7.8020000000000005, 29.443), t[ja](7.8020000000000005, 29.557000000000002), t[Ma](7.8020000000000005, 29.063000000000002, 8.201, 28.662000000000003, 8.698, 28.662000000000003), t[ja](20.597, 28.662000000000003), t[Ma](21.093, 28.662000000000003, 21.491, 29.062, 21.491, 29.557000000000002), t[ja](21.491, 29.443), t[lc](), t[Va](), t.stroke(), t.restore(), t[Ga](), t[Ba] = su, t[Ua](), t[Ia](.789, 24.79), t[Ma](.789, 25.461, 1.334, 26.005, 2.0060000000000002, 26.005), t[ja](27.289, 26.005), t[Ma](27.961000000000002, 26.005, 28.504, 25.461, 28.504, 24.79), t[ja](28.504, 23.267), t.lineTo(.789, 23.267), t[ja](.789, 24.79), t[lc](), t.fill(), t[Za](), t[Ka](), t.save(), t[Ba] = hu, t.beginPath(), t[Ia](27.289, 6.912), t.lineTo(2.006, 6.912), t.bezierCurveTo(1.3339999999999996, 6.912, .7889999999999997, 7.455, .7889999999999997, 8.126), t.lineTo(.7889999999999997, 23.227), t.lineTo(28.503999999999998, 23.227), t[ja](28.503999999999998, 8.126), t[Ma](28.504, 7.455, 27.961, 6.912, 27.289, 6.912), t.closePath(), t[Va](), t[Za](), t.restore(), t[Ga](), t[Ga](), t[Ka](), t[Ga](), t.restore(), t.restore(), t.save();
        var i = t[sf](5.54, 6.2451, 23.7529, 24.458);
        i[bc](0, ru), i[bc](1, au), t[Ba] = i, t[Ua](), t.moveTo(25.78, 8.671), t[ja](3.514, 8.671), t.bezierCurveTo(2.9819999999999998, 8.671, 2.549, 9.101999999999999, 2.549, 9.635), t[ja](2.549, 21.466), t.lineTo(26.743, 21.466), t.lineTo(26.743, 9.636), t[Ma](26.743, 9.102, 26.312, 8.671, 25.78, 8.671), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ka](), t.save(), t[Ga](), t[Ba] = eu, t[Ua](), t[Ia](27.053, 33.602), t[ja](36.22, 33.602), t[Sa](36.22, 33.602, 36.22, 33.602), t[ja](36.22, 36.501), t[Sa](36.22, 36.501, 36.22, 36.501), t[ja](27.053, 36.501), t[Sa](27.053, 36.501, 27.053, 36.501), t[ja](27.053, 33.602), t.quadraticCurveTo(27.053, 33.602, 27.053, 33.602), t[lc](), t[Va](), t[Za](), t[Ka](), t.save(), t[Ba] = su, t[Ua](), t.moveTo(39.104, 37.352), t.bezierCurveTo(39.104, 37.891, 38.67, 38.327, 38.13, 38.327), t[ja](25.143, 38.327), t.bezierCurveTo(24.602, 38.327, 24.166, 37.891, 24.166, 37.352), t[ja](24.166, 37.477999999999994), t[Ma](24.166, 36.937, 24.602, 36.501, 25.143, 36.501), t[ja](38.131, 36.501), t.bezierCurveTo(38.671, 36.501, 39.105, 36.937, 39.105, 37.477999999999994), t.lineTo(39.105, 37.352), t[lc](), t[Va](), t[Za](), t.restore(), t[Ga](), t[Ba] = su, t[Ua](), t[Ia](16.514, 32.275), t[Ma](16.514, 33.004999999999995, 17.107, 33.601, 17.839, 33.601), t.lineTo(45.433, 33.601), t[Ma](46.166, 33.601, 46.758, 33.005, 46.758, 32.275), t[ja](46.758, 30.607999999999997), t.lineTo(16.514, 30.607999999999997), t[ja](16.514, 32.275), t[lc](), t[Va](), t[Za](), t.restore(), t[Ga](), t[Ba] = hu, t[Ua](), t[Ia](45.433, 12.763), t.lineTo(17.839, 12.763), t[Ma](17.107, 12.763, 16.514, 13.356, 16.514, 14.089), t[ja](16.514, 30.57), t[ja](46.757999999999996, 30.57), t[ja](46.757999999999996, 14.088), t.bezierCurveTo(46.758, 13.356, 46.166, 12.763, 45.433, 12.763), t.closePath(), t[Va](), t[Za](), t.restore(), t[Ga](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ka](), t[Ga](), (i = t[sf](21.6973, 12.0352, 41.5743, 31.9122)).addColorStop(0, ru), i[bc](1, au), t[Ba] = i, t[Ua](), t[Ia](43.785, 14.683), t[ja](19.486, 14.683), t.bezierCurveTo(18.903000000000002, 14.683, 18.433, 15.153, 18.433, 15.735), t[ja](18.433, 28.649), t.lineTo(44.837, 28.649), t.lineTo(44.837, 15.734), t.bezierCurveTo(44.838, 15.153, 44.367, 14.683, 43.785, 14.683), t[lc](), t[Va](), t.stroke(), t[Ka](), t[Ka](), t[Ga](), t[$a] = .5, t.beginPath(), t.moveTo(23.709, 36.33), t[ja](4.232, 36.33), t[ja](4.232, 27.199), t[ja](5.304, 27.199), t.lineTo(5.304, 35.259), t.lineTo(23.709, 35.259), t.lineTo(23.709, 36.33), t[lc](), t.fill(), t.stroke(), t[Ka](), t.restore()
      }
    },
    subnetwork: {
      draw: function (t) {
        t[Ga](), t.translate(0, 0), t.beginPath(), t.moveTo(0, 0), t.lineTo(60.75, 0), t[ja](60.75, 42.125), t[ja](0, 42.125), t.closePath(), t[dc](), t.translate(0, .26859504132231393), t[Wa](.6694214876033058, .6694214876033058), t.translate(0, 0), t.strokeStyle = Gf, t.lineCap = Br, t[Nf] = Ur, t[vc] = 4, t[Ga](), t[Ga](), t[Ka](), t[Ga](), t[Ka](), t[Ka](), t[Ga]();
        var i = t.createLinearGradient(43.6724, -2.7627, 43.6724, 59.3806);
        i[bc](0, "rgba(159, 160, 160, 0.7)"), i[bc](.9726, nu), t[Ba] = i, t.beginPath(), t[Ia](61.732, 16.509), t.bezierCurveTo(61.686, 16.509, 61.644, 16.515, 61.599, 16.515), t[Ma](58.126, 8.152000000000001, 49.884, 2.2650000000000006, 40.262, 2.2650000000000006), t.bezierCurveTo(29.567, 2.2650000000000006, 20.594, 9.545000000000002, 17.966, 19.415), t[Ma](9.09, 20.566, 2.229, 28.136, 2.229, 37.326), t[Ma](2.229, 47.309, 10.322, 55.403000000000006, 20.306, 55.403000000000006), t.bezierCurveTo(23.374000000000002, 55.403000000000006, 26.257, 54.633, 28.787, 53.28900000000001), t.bezierCurveTo(31.197, 56.56000000000001, 35.067, 58.69000000000001, 39.442, 58.69000000000001), t.bezierCurveTo(42.555, 58.69000000000001, 45.408, 57.60900000000001, 47.669, 55.81200000000001), t[Ma](51.586, 58.57800000000001, 56.443999999999996, 60.238000000000014, 61.732, 60.238000000000014), t.bezierCurveTo(74.64699999999999, 60.238000000000014, 85.116, 50.45000000000002, 85.116, 38.37400000000001), t.bezierCurveTo(85.116, 26.298, 74.646, 16.509, 61.732, 16.509), t[lc](), t[Va](), t[Za](), t[Ka](), t.save(), t[Ga](), t[Ba] = eu, t[Ua](), t[Ia](34.966, 44.287), t[ja](45.112, 44.287), t.quadraticCurveTo(45.112, 44.287, 45.112, 44.287), t.lineTo(45.112, 47.497), t[Sa](45.112, 47.497, 45.112, 47.497), t[ja](34.966, 47.497), t.quadraticCurveTo(34.966, 47.497, 34.966, 47.497), t.lineTo(34.966, 44.287), t[Sa](34.966, 44.287, 34.966, 44.287), t[lc](), t.fill(), t[Za](), t.restore(), t.save(), t[Ba] = ou, t.beginPath(), t[Ia](48.306, 48.439), t.bezierCurveTo(48.306, 49.034, 47.824999999999996, 49.52, 47.226, 49.52), t[ja](32.854, 49.52), t.bezierCurveTo(32.253, 49.52, 31.771, 49.034000000000006, 31.771, 48.439), t[ja](31.771, 48.578), t[Ma](31.771, 47.981, 32.253, 47.497, 32.854, 47.497), t.lineTo(47.226, 47.497), t[Ma](47.824999999999996, 47.497, 48.306, 47.98, 48.306, 48.578), t[ja](48.306, 48.439), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t.fillStyle = fu, t[Ua](), t[Ia](23.302, 42.82), t[Ma](23.302, 43.63, 23.96, 44.287, 24.772, 44.287), t.lineTo(55.308, 44.287), t[Ma](56.12, 44.287, 56.775, 43.629999999999995, 56.775, 42.82), t[ja](56.775, 40.98), t[ja](23.302, 40.98), t[ja](23.302, 42.82), t[lc](), t[Va](), t[Za](), t[Ka](), t.save(), t[Ba] = hu, t[Ua](), t.moveTo(55.307, 21.229), t[ja](24.771, 21.229), t[Ma](23.959, 21.229, 23.301000000000002, 21.884, 23.301000000000002, 22.695), t[ja](23.301000000000002, 40.933), t.lineTo(56.774, 40.933), t[ja](56.774, 22.695), t[Ma](56.774, 21.884, 56.119, 21.229, 55.307, 21.229), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ga](), t[Ga](), t.restore(), t[Ga](), t[Ka](), t[Ka](), t[Ga](), (i = t.createLinearGradient(29.04, 20.4219, 51.0363, 42.4181)).addColorStop(0, ru), i[bc](1, au), t[Ba] = i, t[Ua](), t[Ia](53.485, 23.353), t.lineTo(26.592, 23.353), t[Ma](25.948999999999998, 23.353, 25.427, 23.873, 25.427, 24.517000000000003), t[ja](25.427, 38.807), t[ja](54.647, 38.807), t.lineTo(54.647, 24.517000000000003), t[Ma](54.648, 23.873, 54.127, 23.353, 53.485, 23.353), t[lc](), t[Va](), t[Za](), t[Ka](), t[Ka](), t[Ka]()
      }
    }
  };
  for (var XG in jG) bG(cu + XG, jG[XG]);

  function ZG(t) {
    this[uu] && this[_u] && (t.x -= this[_u].x, t.y -= this[_u].y), this[lu] && SF(t, this[lu]), t.x += this[du] || 0, t.y += this[vu] || 0;
    var i = GY(this);
    return i ? SF(t, i) : t
  }

  function zG(t) {
    var i = GY(this);
    return i && SF(t, -i), t.x -= this.$offsetX || 0, t.y -= this[vu] || 0, this.$rotate && SF(t, -this[lu]), this[uu] && this[_u] && (t.x += this[_u].x, t.y += this[_u].y), t
  }

  function KG() {
    var t = this[bu];
    this[bu] && (this[bu] = !1, this.$invalidateAnchorPoint = !0, this._8O.setByRect(this._kG), this[yu] && this._8O.grow(this[yu]), this.$border && this._8O.grow(this[gu]));
    var i = this._$u();
    if (i) var n = this.showPointer && this.$pointerWidth;
    return this[Eu] && this.$layoutByAnchorPoint && (this[Eu] = !1, n && (t = !0), this[_u] = AB(this[xu], this._8O.width, this._8O.height), this._oAJ.x += this._8O.x, this[_u].y += this._8O.y), i ? (t && (this[pu] = !0, function (t) {
      var i = this._8O.x + this[gu] / 2,
        n = this._8O.y + this[gu] / 2,
        e = this._8O.width - this[gu],
        s = this._8O.height - this.$border,
        h = 0,
        r = 0;
      if (this.$borderRadius && (WN(this.$borderRadius) ? h = r = this[Tu] : (h = this.$borderRadius.x || 0, r = this[Tu].y || 0), h = Math.min(h, e / 2), r = Math.min(r, s / 2)), t && (this[mu] = this[_u].x - this[du] + this.$pointerX, this[wu] = this[_u].y - this[vu] + this[Ou], !this._8O[Zt](this[mu], this[wu]))) {
        var a = new UG(i, n, e, s, h, r, this[Au], this[mu], this._pointerY);
        return this[Iu] = a._mT, this[Iu].bounds.set(i, n, e, s), void(this[Su] = !0)
      }
      this._nJShape && this._nJShape[St](), this[Iu] = IY[Mu](i, n, e, s, h, r, this._nJShape), this[Iu][oo].set(i, n, e, s)
    }.call(this, n)), this[pu] && (this[pu] = !1, this.backgroundGradient && this[Iu] && this[Iu][oo] ? this._oAackgroundGradient = xG[_][ku][p](this[Cu], this[Iu][oo]) : this[Lu] = null)) : this.__mWPointer = !1, t
  }

  function JG(t, i, n, e) {
    if (e && (t.width < 0 || t.height < 0)) return t.x = i, t.y = n, void(t.width = t[Wt] = 0);
    i < t.x ? (t[Yt] += t.x - i, t.x = i) : i > t.x + t.width && (t.width = i - t.x), n < t.y ? (t[Wt] += t.y - n, t.y = n) : n > t.y + t[Wt] && (t.height = n - t.y)
  }
  var QG = function () {
    this.$invalidateRotate = !1;
    var t = this._h0;
    t[St]();
    var i = this[gu] || 0,
      n = this._8O.x + i / 2,
      e = this._8O.y + i / 2,
      s = this._8O.width - i,
      h = this._8O.height - i,
      r = ZG[p](this, {
        x: n,
        y: e
      });
    JG(t, r.x, r.y, !0), JG(t, (r = ZG.call(this, {
      x: n + s,
      y: e
    })).x, r.y), JG(t, (r = ZG[p](this, {
      x: n + s,
      y: e + h
    })).x, r.y), JG(t, (r = ZG[p](this, {
      x: n,
      y: e + h
    })).x, r.y), this.__mWPointer && JG(t, (r = ZG[p](this, {
      x: this[mu],
      y: this[wu]
    })).x, r.y), i && t[Ru](i / 2)
  };

  function qG(t, i) {
    if (i)
      if (i._8O[yn]()) t.$x = i.$x, t.$y = i.$y;
      else {
        var n = function (t, i, n) {
          var e, s = t[Pu],
            h = t.layoutByPath === k ? this[Du] : t.layoutByPath;
          return this[Nu] instanceof NG && h ? ((e = eG[Bu](s, this[Nu], this.lineWidth, i, n, t.globalDirection)).x *= this._kI, e.y *= this._kJ) : ((e = AB(s, this._8O.width, this._8O[Wt])).x += this._8O.x, e.y += this._8O.y), ZG[p](this, e)
        } [p](i, t);
        t.$x = n.x, t.$y = n.y, t[Fu] = n[kt]
      }
    else t.$x = 0, t.$y = 0;
    t.$invalidateRotate && QG[p](t)
  }

  function t$(t) {
    if (t[jf] === k) {
      var i, n;
      if (t.setLineDash) i = t.getLineDash, n = t.setLineDash;
      else {
        var e;
        if (t[Gu] !== k) e = Gu;
        else {
          if (t[$u] === k) return !1;
          e = $u
        }
        n = function (t) {
          this[e] = t
        }, i = function () {
          return this[e]
        }
      }
      QN(t, jf, {
        get: function () {
          return i.call(this)
        },
        set: function (t) {
          n[p](this, t)
        }
      })
    }
    if (t[Xf] === k) {
      var s;
      if (t.mozDashOffset !== k) s = Yu;
      else {
        if (t[Wu] === k) return;
        s = Wu
      }
      QN(t, Xf, {
        get: function () {
          return this[s]
        },
        set: function (t) {
          this[s] = t
        }
      })
    }
  }

  function i$(t) {
    return t[Uu](function (t, i) {
      return 2 * t + i
    }, 0)
  }

  function n$(t) {
    for (var i = [], n = 7; 0 <= n; n--) i[M](!!(t & 1 << n));
    return i
  }
  var e$ = {
      _hD: !1,
      _kX: null,
      _dI: 0,
      _m1: -1,
      _lV: null,
      _f9: function (t) {
        this._kX || (this._kX = [], this._k5 = 2), this._kX[M](t), this._e9(), this._lZ()
      },
      _lZ: function () {
        if (!this._lV) {
          var i = this;
          this._lV = setTimeout(function t() {
            !1 === i._e9() ? delete i._lV : i._lV = setTimeout(t, i._hF())
          }, this._hF())
        }
      },
      _hF: function () {
        return Math.max(20, this._kX[this._m1].delay)
      },
      _e9: function () {
        return this._g3(this._m1 + 1)
      },
      _g3: function (t) {
        if (this._hD) t %= this._dI;
        else if (t >= this._kX[N]) return !1;
        if (this._m1 == t) return !1;
        this._m1 = t;
        var i = this._kX[this._m1],
          n = i[ju];
        return n || (i[ju] = n = PF(this.width, this[Wt]), n.g.putImageData(i[Ki], 0, 0), n._pixels = i[lo]), this._lN = n, this[bu] = !0, this._eM()
      },
      _dJ: function () {
        if (this._kX) {
          if (this._hD = !0, this._dI = this._kX[N], 1 == this._dI) return this._eM();
          this._lZ()
        } else this._j0()
      },
      _n3: function () {
        this._lV && (clearTimeout(this._lV), delete this._lV)
      },
      _eM: function () {
        var t = this[fo][Vi];
        if (!t || !t[N]) return !1;
        for (var i = new SB(this, Uo, Ho, this._lN), n = 0, e = t[N]; n < e; n++) {
          var s = t[n];
          s[Hi]._kK && s.scope._kK[Xu] ? (t.splice(n, 1), n--, e--) : s[O].call(s.scope, i)
        }
        return 0 < t[N]
      },
      _oA8: function (t, i) {
        this._dispatcher[Xi](t, i), this._hD && !this._lV && this._lZ()
      },
      _6Z: function (t, i) {
        this[fo].removeListener(t, i), this[fo][Zu]() || this._n3()
      },
      _iZ: function () {
        this._n3(), this[fo][St]()
      },
      _gK: function (t, i, n) {
        var e = this._lN[zu];
        return e || (this._lN[zu] = e = new WG(this._lN, 1)), e
      }
    },
    s$ = function (t) {
      this.data = t, this.len = this.data[N], this.pos = 0, this[Ku] = function () {
        if (this.pos >= this[Ki][N]) throw new Error("Attempted to read past end of stream.");
        return 255 & t.charCodeAt(this.pos++)
      }, this[Ju] = function (t) {
        for (var i = [], n = 0; n < t; n++) i.push(this[Ku]());
        return i
      }, this[Qu] = function (t) {
        for (var i = "", n = 0; n < t; n++) i += String[qu](this[Ku]());
        return i
      }, this.readUnsigned = function () {
        var t = this[Ju](2);
        return (t[1] << 8) + t[0]
      }
    },
    h$ = function (s, h) {
      function r(t) {
        for (var i = [], n = 0; n < t; n++) i.push(s[Ju](3));
        return i
      }

      function a() {
        var t, i;
        for (i = ""; t = s.readByte(), i += s[Qu](t), 0 !== t;);
        return i
      }

      function i(t) {
        var i, n, e;
        switch (t[t_] = s[Ku](), t[t_]) {
          case 249:
            t.extType = i_,
              function (t) {
                s[Ku]();
                var i = n$(s[Ku]());
                t[n_] = i.splice(0, 3), t[To] = i$(i[m](0, 3)), t.userInput = i[e_](), t[xo] = i[e_](), t[po] = s[s_](), t[h_] = s[Ku](), t[r_] = s[Ku](), h.gce && h.gce(t)
              }(t);
            break;
          case 254:
            t.extType = a_, (n = t)[o_] = a(), h.com && h.com(n);
            break;
          case 1:
            t.extType = f_, e = t, s[Ku](), e[c_] = s.readBytes(12), e[u_] = a(), h.pte && h.pte(e);
            break;
          case 255:
            t[__] = l_,
              function (t) {
                var i, n;
                switch (s[Ku](), t.identifier = s[Qu](8), t[d_] = s[Qu](3), t[v_]) {
                  case "NETSCAPE":
                    n = t, s[Ku](), n[b_] = s.readByte(), n.iterations = s.readUnsigned(), n[r_] = s.readByte(), h.app && h.app[y_] && h.app[y_](n);
                    break;
                  default:
                    (i = t)[g_] = a(), h.app && h.app[i[v_]] && h.app[i[v_]](i)
                }
              }(t);
            break;
          default:
            t[__] = b_, (i = t)[Ki] = a(), h[b_] && h[b_](i)
        }
      }

      function n(t) {
        t[Ao] = s.readUnsigned(), t[wo] = s[s_](), t.width = s[s_](), t[Wt] = s[s_]();
        var i = t[Yt] * t[Wt],
          n = n$(s[Ku]());
        t[mo] = n.shift(), t[E_] = n.shift(), t.sorted = n[e_](), t[n_] = n[m](0, 2), t[x_] = i$(n.splice(0, 3)), t[mo] && (t.lct = r(1 << t[x_] + 1)), t[p_] = s.readByte();
        var e = a();
        t[Oo] = function (i, e, t) {
          function n(t) {
            for (var i = 0, n = 0; n < t; n++) e[Hu](a >> 3) & 1 << (7 & a) && (i |= 1 << n), a++;
            return i
          }

          function s() {
            _ = [], u = i + 1;
            for (var t = 0; t < f; t++) _[t] = [t];
            _[f] = [], _[c] = null
          }
          for (var h, r, a = 0, o = [], f = 1 << i, c = 1 + f, u = i + 1, _ = [], l = 0; r = h, h = n(u), !(l++ > t);)
            if (h !== f) {
              if (h === c) break;
              if (h < _.length) r !== f && _.push(_[r].concat(_[h][0]));
              else {
                if (h !== _[N]) throw new Error(Vu);
                _[M](_[r][B](_[r][0]))
              }
              o.push.apply(o, _[h]), _.length === 1 << u && u < 12 && u++
            } else s();
          return o
        }(t[p_], e, i), t[E_] && (t[Oo] = function (t, i) {
          for (var n, e, s = new Array(t[N]), h = t[N] / i, r = [0, 4, 2, 1], a = [8, 8, 4, 2], o = 0, f = 0; f < 4; f++)
            for (var c = r[f]; c < h; c += a[f]) n = c, e = t.slice(o * i, (o + 1) * i), s[m][d](s, [n * i, i].concat(e)), o++;
          return s
        }(t[Oo], t[Yt])), h.img && h.img(t)
      }
      h = h || {};
      var e = function () {
        var t = {};
        switch (t[T_] = s[Ku](), String[qu](t[T_])) {
          case "!":
            t[Oi] = m_, i(t);
            break;
          case ",":
            t[Oi] = vo, n(t);
            break;
          case ";":
            t[Oi] = w_, h.eof && h.eof(t);
            break;
          default:
            throw new Error(O_ + t[T_].toString(16))
        }
        w_ !== t[Oi] && setTimeout(e, 0)
      };
      ! function () {
        var t = {};
        if (t.sig = s.read(3), t.ver = s[Qu](3), A_ !== t.sig) throw new Error(I_);
        t[Yt] = s[s_](), t.height = s[s_]();
        var i = n$(s[Ku]());
        t[S_] = i.shift(), t.colorRes = i$(i[m](0, 3)), t[M_] = i[e_](), t[k_] = i$(i[m](0, 3)), t[C_] = s[Ku](), t.pixelAspectRatio = s[Ku](), t[S_] && (t.gct = r(1 << t[k_] + 1)), h.hdr && h.hdr(t)
      }(), setTimeout(e, 0)
    },
    r$ = "";
  x[fe] && x[fe](L_, function (t) {
    if (t[Ds] && t.shiftKey && t.altKey && 73 == t[R_]) {
      var i = wF[P_] + D_ + wF[N_] + B_ + wF.publishDate + F_ + wF.about + F_ + wF[G_] + r$;
      wF.alert(i)
    }
  }, !1);
  var a$ = $_;
  r$ = Y_ + decodeURIComponent("temp%20license-2020.10.1");
  var o$, f$, c$, u$ = u,
    _$ = W_,
    l$ = U_,
    d$ = u$[at];

  function v$(t, i) {
    try {
      if (null == t || t[N] < 8) return;
      if (null == i || i[N] <= 0) return;
      for (var n = "", e = 0; e < i.length; e++) n += i.charCodeAt(e).toString();
      var s = Math[H_](n[N] / 5),
        h = parseInt(n.charAt(s) + n[V_](2 * s) + n[V_](3 * s) + n[V_](4 * s) + n[V_](5 * s), 10),
        r = Math[or](i[N] / 2),
        a = Math.pow(2, 31) - 1,
        o = parseInt(t.substring(t.length - 8, t[N]), 16);
      for (t = t[Xn](0, t.length - 8), n += o; 10 < n[N];) n = (parseInt(n[Xn](0, 10), 10) + parseInt(n[Xn](10, n[N]), 10)).toString();
      n = (h * n + r) % a;
      var f = "",
        c = "";
      for (e = 0; e < t.length; e += 2) f = parseInt(parseInt(t.substring(e, e + 2), 16) ^ Math.floor(n / a * 255), 10), c += String.fromCharCode(f), n = (h * n + r) % a;
      return 0 | c[0] ? u$[j_ + _$ + X_](c) : null
    } catch (t) {}
  }

  function b$(t, i) {
    i = i || il;
    try {
      c$.call(t, i, 666, 111)
    } catch (t) {}
  }
  d$ && (f$ = u$[Z_][z_], d$[p](u$, function () {
    var t, i = a$;
    if (i) {
      i = (g$ = i).split(J);
      for (var n = 0; n < i[N] && !((t = v$(i[n], f$)) && 8 <= t.split(F_)[N]);) 1 == i.length && (t = v$(i[n], K_)), n++;
      if (!t || t.split(F_).length < 8) return E$ = !0, "" === f$ || J_ == f$ || Q_ == f$ ? (x$ = O$, void(y$ = T$ = !1)) : (x$ = O$, void(T$ = !0));
      if ((y$ = t.split(F_))[3] == CU) {
        T$ = !1, 1 < y$[0] && (E$ = !1);
        var e = y$[5];
        p$ = e;
        var s = y$[6];
        x$ = s
      } else E$ = !0
    } else T$ = !0
  }, q_), d$[p](u$, function () {
    var t = g$;
    if (t) {
      var i;
      t = t.split(J);
      for (var n = 0; n < t.length && !((i = R$(t[n], f$)) && 8 <= i.split(F_).length);) 1 == t[N] && (i = R$(t[n], K_)), n++;
      if (8 <= i[G](F_)[N]) return void(m$ = !1)
    }
    m$ = !(!f$ || J_ == f$ || Q_ == f$)
  }, l$), d$[p](u$, function () {
    g$ && g$ == a$ && (w$ = !1)
  }, tl));
  var y$, g$, E$ = !0,
    x$ = !0,
    p$ = !0,
    T$ = !0,
    m$ = !0,
    w$ = !0,
    O$ = 2048;

  function A$() {
    if (E$) {
      var t = IW.prototype._kL,
        e = b$;
      IW[_]._kL = function () {
        t[d](this, arguments), e.call(this[nl], this.g)
      };
      var s = Q$[_]._hY;
      Q$.prototype._hY = function (t, i, n) {
        s[d](this, arguments), e[p](this, t)
      }
    }
  }

  function I$() {
    if (!0 !== p$ && p$) {
      var t = p$.split(nt);
      if (3 != t[N]) return void(NY[_]._kL = null);
      3 * (365.2425 * (parseInt(t[0], 10) - 2e3 + 30) + 3 * (parseInt(t[1], 10) - 1) * 10 + parseInt(t[2], 10)) * 8 * 3 * 1200 * 1e3 < o$ && (NY[_]._kL = null)
    }
  }

  function S$() {
    var t = 0 | x$;
    if (t) {
      var i = $B.prototype._lT;
      $B[_]._lT = function () {
        return !(this._kE.length > t) && i[d](this, arguments)
      }
    }
  }

  function M$() {
    T$ && (hB.prototype._lT = hB.prototype._gS)
  }

  function k$() {
    if (m$) {
      var e = b$,
        s = Q$[_]._hY;
      Q$[_]._hY = function (t, i, n) {
        s[d](this, arguments), e[p](this, t)
      }
    }
  }

  function C$() {
    if (w$) {
      var t = IW.prototype._kL,
        i = b$;
      IW[_]._kL = function () {
        t.apply(this, arguments), i.call(this[nl], this.g)
      }
    }
  }

  function L$() {
    y$ === k && (Q$[_]._k8 = yB[Qt])
  }
  var R$ = function (t, i) {
    return v$(t, i) || ""
  };
  if (x.createElement) {
    var P$ = x[Gn](el);
    P$[Yn][sl] = ar, P$[go] = function (t) {
      var i = t[hl][rl];
      if ("" !== f$ && J_ != f$ && al != f$) {
        var s = i[ol][qu];
        i[at](function () {
          var n, e;
          n = s, (e = [51, 10, 10, 113, 117, 110, 101, 101, 10, 50, 46, 48, 10, 49, 53, 57, 51, 53, 54, 52, 50, 55, 54, 52, 49, 57, 10, 50, 48, 50, 48, 46, 49, 48, 46, 49, 10, 10, 116, 101, 109, 112, 32, 108, 105, 99, 101, 110, 115, 101, 45, 50, 48, 50, 48, 46, 49, 48, 46, 49]).forEach(function (t, i) {
            e[i] = n(t)
          }), e.join("") != y$ && (NY.prototype._kL = null)
        }, l$), this.parentNode[co].removeChild(this[co])
      } else this[co][co].removeChild(this[co])
    }, (D$ = x[Gn]($n)).style[Yt] = fl, D$[Yn][Wt] = fl, D$[Yn][cl] = bo, D$[ee](P$), x[ul].appendChild(D$)
  }
  if (x[Gn]) {
    var D$, N$ = x[Gn](el);
    N$.style[sl] = ar, N$.onload = function (t) {
      var i = t.target[rl];
      o$ = i.Date.now();
      var n = i[_l][_];
      c$ = n[ll], CN && (i = u$);
      var e = i[at];
      e[p](u$, M$, l$), e[p](u$, k$, dl), e[p](u$, L$, tl), e[p](u$, A$, vl), e[p](u$, S$, bl), e[p](u$, C$, l$), e[p](u$, I$, l$), this.parentNode[co][uo](this[co])
    }, (D$ = x[Gn]($n))[Yn].width = fl, D$[Yn][Wt] = fl, D$[Yn].overflow = bo, D$[ee](N$), x[ul].appendChild(D$)
  }

  function B$(t, i, n, e, s, h, r, a) {
    if (!(t === n && i === e || s === r && h === a)) {
      var o = (a - h) * (n - t) - (r - s) * (e - i);
      if (0 != o) {
        var f = ((r - s) * (i - h) - (a - h) * (t - s)) / o,
          c = ((n - t) * (i - h) - (e - i) * (t - s)) / o;
        if (!(f < 0 || 1 < f || c < 0 || 1 < c)) {
          var u = t + f * (n - t),
            _ = i + f * (e - i);
          if (!(u === s && _ === h || u === r && _ === a)) return {
            x: u,
            y: _
          }
        }
      }
    }
  }

  function F$(t, n) {
    var e;
    t.forEach(function (t) {
      var i;
      e && (ei === t[Oi] || Array.isArray(t) && 2 === t[N]) && n(2 <= (i = (i = e).points || i)[N] && i[C](i[N] - 2, i[N]), t[Ns] || t, t), e = t
    })
  }
  var G$ = ($$[_][St] = function () {
    this.currentPaths[N] = 0
  }, $$.prototype[yl] = function (t) {
    var u, _, l, d;
    t[If] = null, this[gl][N] && (u = this[gl], _ = t, l = new Y$, d = [], F$(_, function (e, t, i) {
      var n;
      if (l.set(e[0], e[1], t[0], t[1]), !(l.length <= 8) && (d[N] = 0, u.forEach(function (t) {
          F$(t, function (t, i) {
            var n = l[El](t[0], t[1], i[0], i[1]);
            if (n) {
              if (n[Rt] = rB(e[0], e[1], n.x, n.y), n.distance <= 4 || l.length - n[Rt] <= 4) return;
              d[M](n)
            }
          })
        }), d[N])) {
        1 < d[N] && d.sort(function (t, i) {
          return t[Rt] - i[Rt]
        });
        for (var s, h, r = [], a = 0, o = d[N]; a < o;) {
          var f = d[a++];
          (!s || 8 < f[Rt] - s[Rt]) && (s && c(), h = f[Rt] - 4, r.push(new DG(ei, l.getArrayPoint(h, 0)))), s = f
        }
        c(), _[If] = _[C](0), (n = _.__kLSegments)[m].apply(n, function () {
          for (var t = 0, i = 0, n = arguments[N]; i < n; i++) t += arguments[i][N];
          var e = Array(t),
            s = 0;
          for (i = 0; i < n; i++)
            for (var h = arguments[i], r = 0, a = h[N]; r < a; r++, s++) e[s] = h[r];
          return e
        }([_[If][b](i), 0], r))
      }

      function c() {
        r.push(new DG(ci, l.getArrayPoint(h, 4, !0)[B](l[xl](s[Rt] + 4, 4, !0)).concat(l.getArrayPoint(s.distance + 4, 0))))
      }
    })), this[gl][M](t)
  }, $$);

  function $$() {
    this[gl] = []
  }
  var Y$ = (W$.prototype.set = function (t, i, n, e) {
    this.x1 = t, this.x2 = n, this.y1 = i, this.y2 = e, this.cx = .5 * (t + n), this.cy = .5 * (i + e), this._mJ = this._kV = k
  }, Object[A](W$.prototype, N, {
    get: function () {
      return this._kV === k ? this._kV = rB(this.x1, this.y1, this.x2, this.y2) : this._kV
    },
    enumerable: !0,
    configurable: !0
  }), Object[A](W$.prototype, ef, {
    get: function () {
      return this._mJ === k ? this._mJ = Math.atan2(this.y2 - this.y1, this.x2 - this.x1) : this._mJ
    },
    enumerable: !0,
    configurable: !0
  }), W$.prototype[xl] = function (t, i, n) {
    return this.getPoint(t, i, n, !0)
  }, W$.prototype[pl] = function (t, i, n, e) {
    n && Math.abs(this[ef]) < Math.PI / 2 && (i = -i);
    var s = Math.sin(this.angle),
      h = Math.cos(this[ef]),
      r = this.x1 + h * t - s * i,
      a = this.y1 + s * t + h * i;
    return e ? [r, a] : {
      x: r,
      y: a
    }
  }, W$[_][El] = function (t, i, n, e) {
    return a == typeof t ? B$(this.x1, this.y1, this.x2, this.y2, t.x1, t.y1, t.x2, t.y2) : B$(this.x1, this.y1, this.x2, this.y2, t, i, n, e)
  }, W$);

  function W$() {}
  var U$ = Tl;
  ZB(nt + U$, {
    position: ml,
    userSelect: ar,
    outline: ar,
    transformOrigin: wl,
    "-webkit-tap-highlight-color": Gf
  });
  var H$ = Ol;
  ZB(nt + H$, {
    width: Al,
    height: Al,
    position: Il,
    overflow: bo,
    textAlign: Kt,
    outline: ar,
    tapHighlightColor: Gf,
    userSelect: ar
  });
  var V$ = Sl;

  function rN(t, f) {
    return function t(i) {
      var n = i[N],
        e = Math[c](n / 2);
      return n <= 1 ? i : function (t, i) {
        for (var n = t[N], e = i[N], s = n + e, h = new Array(s), r = 0, a = 0, o = 0; o < s;) r === n ? h[o++] = i[a++] : a === e || f(t[r], i[a]) <= 0 ? h[o++] = t[r++] : h[o++] = i[a++];
        return h
      }(t(i[C](0, e)), t(i[C](e)))
    }(t)
  }
  ZB(nt + V$, {
    overflow: bo,
    "text-align": Kt,
    "-webkit-tap-highlight-color": Gf,
    outline: ar
  });
  var j$, X$ = EN(function (t) {
    this._oB5 = new z$, this._o0 = new hB, this._93 = [], this._dK = [], this[Ml] = [], this._91 = {}, this[oo] = new yB, this._l3 = new sY, this[kl] = new aY, this._l3[Wi] = function (t) {
      this._7R(t)
    }.bind(this), this._dQ(), this[Cl](t)
  }, {
    _oAX: null,
    _k6: null,
    _o0: null,
    _dK: null,
    _l3: null,
    _d7: function (t) {
      return t ? (this[Ll] || (this._6Ws = {}), !this[Ll][t] && (this._6Ws[t] = !0, void this[Rl]())) : this[Rl]()
    },
    _o9F: function (t) {
      return this[Ll] && this._6Ws[t]
    },
    isInvalidate: function () {
      return this._6W
    },
    clear: function () {
      this._o0.clear(), this._dK[N] = 0, this._91 = {}, this[ke] = !1, this[Rl]()
    },
    _7N: function () {
      this._d7(Pl), this._2X()
    },
    _2X: function () {
      this._d7(Dl)
    },
    invalidate: function (t) {
      !t && this._6W || (this._6W = !0, this._n3 || (this[Nl] = requestAnimationFrame(this._gJ[Ye](this))))
    },
    _7P: function (t) {
      (this._n3 = t) ? this._kLingID && (cancelAnimationFrame(this[Nl]), this[Nl] = null): this._6W && this.invalidate(!0)
    },
    _gJ: function () {
      this._kLingID = null, this._6W = !1;
      var t = this._oAH;
      this._oAH || (this._dO(), this[ke] = !0), this._dM(!t), this._3Y(), this._kL(), this._2G()
    },
    _69: !1,
    _dM: function (t) {
      this[Bl] = t || this[Fl] || this._69, this._69 = !1, (t || this[Ll].size) && this[Gl](), (t || this[Ll][$l]) && this._7S(), this[Yl](t), this._4S(t), this._6Ws = {}
    },
    _3Y: function () {
      this._dK[N] = 0;
      var n = this[kl];
      if (this._o0[Mt](function (t) {
          if (!1 !== t[Wl]) {
            var i = this[Ul](t);
            n[Hl](i.x, i.y, i[Yt], i.height) && this._dK[M](t)
          }
        }, this), this._dK = this._jN(this._dK), !this[Bl]) {
        var e = this[Vl];
        this[Ml].length = 0, e[jl](this[kl]), e._jQ() || this._dK.forEach(function (t) {
          var i = this[Ul](t);
          e._fM(i.x, i.y, i[Yt], i.height) && this[Ml][M](t)
        }, this)
      }
    },
    _jN: function (t) {
      return CN ? t = rN(t, this[Xl]) : t[Zl](this[Xl]), t
    },
    _o9H: function (t, i) {
      return (t = t[zl] || 0) - (i.zIndex || 0)
    },
    _oAZ: function (t) {
      return t.boundingBox
    },
    _kL: function () {
      if (this._oB3) return this._fJ(), this._7Q(!0), void this[Kl](this[Jl], this._dK);
      this._7Q(this._oAuffer);
      var t = this[Vl],
        i = this[Jl];
      i[Ga](), this[Ql] && (Z$(i), i[Mo](this._oAuffer[ha], this._oAuffer.x, this[Ql].y)), t._l8(i, this._fK[Ye](this)), this._fJ(), this.render(i, this[Ml]), i[Ka]()
    },
    _7Q: function (t) {
      var i;
      this._d7CanvasSizeFlag ? (this._d7CanvasSizeFlag = !1, this._k6.setSize(this[Lo], this[Ro])) : t && ((i = this._k6).width = i[Yt])
    },
    _o9I: function () {
      var t = this[Yt],
        i = this[Wt];
      if (this._width == t && this[Ro] == i) return !1;
      this[Lo] = t, this[Ro] = i, this[ql] = !0
    },
    _4S: function (t) {
      if (!t && !this._6Ws[Dl]) return !1;
      var i = this._l3.reverseTransform([0, 0]),
        n = this[Wa],
        e = this._width / n,
        s = this[Ro] / n,
        h = this[kt],
        r = this._viewport;
      if (r.x == i[0] && r.y == i[1] && r.width == e && r[Wt] == s && r.rotate == h) return !1;
      var a = r[Af]();
      return this._viewport.set(i[0], i[1], e, s, h, n), this._3O(this[kl], a, t), !0
    },
    _3O: function (t, i, n) {
      this[Bl] || n || (this[Ql] = this._hN(i, t))
    },
    _7R: function (t) {
      var i;
      this[ke] && (this._n3 && (this[td] ? this._oBurrentMatrix[id] = i = q$.mul([], this._l3.m, q$.invert([], this[td].m)) : i = this._l3.m, this._60(i)), this._d7($l), this._2X())
    },
    _60: function (t) {
      this[nd] = t, oY.setStyle(this._k6, ed, t ? sd + t.join(J) + ")" : "")
    },
    _7S: function () {
      var t = this._oBurrentMatrix;
      if (this[td] = {
          tx: this._l3.m[4],
          ty: this._l3.m[5],
          m: this._l3.m[C](),
          scale: this._l3._i4(),
          rotate: this._l3._fQ()
        }, this[nd] && this._60(null), !this[Bl]) {
        if (this._2Y(this[td], t), !t || t[Wa] != this[td].scale) return this._7X(this[td][Wa], t ? t.scale : null), void(this[Bl] = !0);
        if (!t || t[kt] != this[td].rotate) return this._6A(this._oBurrentMatrix.rotate, t ? t.rotate : null), void(this[Bl] = !0);
        var i = t.m[4] - this[td].m[4],
          n = t.m[5] - this[td].m[5],
          e = this[ea];
        i *= e, n *= e, (1e-4 < Math.abs(i - Math.round(i)) || 1e-4 < Math.abs(n - Math[or](n))) && (this[Bl] = !0)
      }
    },
    _7U: function () {
      var i = this[oo],
        t = i.clone();
      i[St](), this._o0[Mt](function (t) {
        !1 !== t[Wl] && i.add(this._oAZ(t))
      }, this), i[Qt](t) || this._3Z(i, t)
    },
    _3Z: function (t, i) {},
    _oAH: !1,
    _dO: function () {},
    _o9K: function (t) {
      var i = t[ea];
      t.scale(i, i), t.transform[d](t, this._l3.m)
    },
    render: function (i, t) {
      t && t.length && (i.save(), this[hd](i), t.forEach(function (t) {
        if (i.save(), !1 !== t[rd]) try {
          t[Kl](i)
        } catch (t) {
          wF.error(t)
        }
        i[Ka]()
      }, this), i[Ka]())
    },
    setParent: function (t) {
      UN(t) && (t = x[ad](t)), this._o2 != t && (this._o2 && this[od] && (YN(this._o2, V$), this._o2[uo](this[od])), this._o2 = t, this._o2 && ($N(this._o2, V$), this._o2.appendChild(this._7V()), this._7N()))
    },
    _7V: function () {
      return this[od] || this._dQ(), this[od]
    },
    _dQ: function () {
      var t = PF(!0);
      t$(t.g), t.className = U$;
      var i = x[Gn]($n);
      return i[fe](Je, function (t) {
        if (x.activeElement == this) return t[s] && t[s](), !1
      } [Ye](i), !1), i[R] = H$, i[ee](t), i[fd] = 0, this._k6 = t, this._oAX = i, this[Jl] = this._k6[ra](aa), t
    },
    toLogical: function (t, i) {
      return t instanceof Object && (iB(t) && (t = this._8G(t)), t = Array.isArray(t) ? (i = t[1] || 0, t[0] || 0) : (i = t.y || 0, t.x || 0)), this._l3[cd]([t, i])
    },
    toCanvas: function (t, i) {
      return this._l3[ed]([t, i])
    },
    _8G: function (t) {
      return function (t, i) {
        t.touches && (t = t[ud] && t[ud][N] ? t[ud][0] : t[me][0]);
        var n = t[we] || 0,
          e = t.clientY || 0;
        BN && LN && (u.pageXOffset && n == t[_d] && (n -= u.pageXOffset), u[ld] && e == t[dd] && (e -= u[ld]));
        var s = i[qn]();
        n -= s[Kt], e -= s.top;
        var h = KB(i, s);
        return h && 1 !== h && (n /= h, e /= h), {
          x: n,
          y: e
        }
      }(t, this[od])
    },
    _fB: function (t, i, n) {
      if (t.hitTest instanceof Function) return t[Wo](i, n);
      var e = this._oAZ(t);
      return e ? n ? yB[Hl](e.x, e.y, e[Yt], e.height, i[0] - n, i[1] - n, n + n, n + n) : yB.intersects(e.x, e.y, e.width, e[Wt], i[0], i[1]) : t
    },
    hitTest: function (t, i) {
      return this._8Z(t, i)
    },
    _8Z: function (t, i) {
      i = this[vd](i), t = this[bd](t);
      for (var n, e = this._dK[N]; 0 <= --e;)
        if (n = this._dK[e], this._fB(n, t, i)) return n
    },
    _o9M: function (t) {
      return t !== k && null !== t || (t = sB[Kr]), t ? t / this[Wa] : 0
    },
    getUIByMouseEvent: function (t, i) {
      if (t.uiId) return this._o0.getById(t[yd]);
      var n = this._8Z(t, i);
      return t[yd] = n ? n.id : -1, n
    },
    _91: null,
    invalidateUI: function (t) {
      this._91[t.id] = t, this[Rl]()
    },
    _o9O: function (t) {
      t.validate instanceof Function && t[ro](this)
    },
    _dS: function (t, i) {
      t[gd] && this._hO(t.__kG);
      var n = t[Wl];
      if (t[Wl] = this._fC(t, i), !t[Wl]) return n;
      var e = t[gd];
      this[Ed](t);
      var s = this[Ul](t);
      t[gd] = {
        x: s.x,
        y: s.y,
        width: s[Yt],
        height: s[Wt]
      };
      var h = t.__jC !== n || !yB[Qt](e, s);
      return h && t[gd] && this._hO(t.__kG), h
    },
    _fC: function (t, i) {
      return !1 !== t[rd]
    },
    _$v: function (i) {
      this._o0[Mt](function (t) {
        this._dS(t, i)
      }, this), this._91 = {}, this._7U()
    },
    _oB0: function (t) {
      var i = this[Wa];
      if (t) return this._$v(i);
      var n = this[xd];
      for (var e in this._d7BoundsFlag = !1, this._91) {
        var s = this._91[e];
        n ? this._dS(s, i) : n = this._dS(s, i)
      }
      this._91 = {}, n && this._7U()
    },
    _93: null,
    _2G: function () {
      if (!this._93[N]) return !1;
      var t = this._93;
      this._93 = [], t[Mt](function (t) {
        try {
          var i = t[p],
            n = t[Hi],
            e = t[pd];
          n instanceof Object ? i = i[Ye](n) : n && !e && (e = parseInt(n)), e ? setTimeout(i, e) : i()
        } catch (t) {}
      }, this), this._6W && this._gJ()
    },
    _e7: function (t, i, n) {
      this._93[M]({
        call: t,
        scope: i,
        delay: n
      }), this._6W || this._2G()
    },
    _4U: function (t, i) {
      for (var n = this._dK, e = 0, s = n.length; e < s; e++)
        if (!1 === t[p](i, n[e])) return !1
    },
    _fD: function (t, i) {
      this._o0[Mt](t, i)
    },
    _10: function (t, i) {
      for (var n = this._dK, e = n[N] - 1; 0 <= e; e--)
        if (!1 === t[p](i, n[e])) return !1
    },
    _4V: function (t, i) {
      this._o0[Td](t, i)
    },
    _4W: function () {
      return this[oo]
    },
    _hH: function (t, i, n) {
      t /= this[Wa] || 1, this._l4(t, i, n)
    },
    _l4: function (t, i, n) {
      if (this._oAH && (i === k || null === i)) {
        var e = this[bd](this.width / 2, this[Wt] / 2);
        i = e[0] || 0, n = e[1] || 0
      }
      return this._l3[Wa](t, [i || 0, n || 0])
    },
    _fF: function (t, i) {
      this._l3[Ya]([t, i], !0)
    },
    _oB1: function (t, i, n, e) {
      if (n == this.scale && !1 !== e) {
        var s = this[ea];
        s != (0 | s) && (t = Math[or](t * s) / s, i = Math[or](i * s) / s)
      }
      this._l3.translateTo([t, i], n)
    },
    _l6: function (t, i) {
      return this._l4(this._fH, t, i)
    },
    _jP: function (t, i) {
      return this._l4(1 / this._fH, t, i)
    },
    _1S: function () {
      var t = this._4W();
      if (!t[yn]()) {
        var i = this.width / t[Yt],
          n = this[Wt] / t[Wt],
          e = Math.min(i, n);
        return {
          scale: e = Math.max(this._hL, Math.min(this._hJ, e)),
          cx: t.cx,
          cy: t.cy
        }
      }
    },
    _fH: 1.2,
    _hJ: 10,
    _hL: .1,
    _oB3: !1,
    _7X: function (t, i) {},
    _6A: function (t, i) {},
    _2Y: function () {},
    _fJ: function () {
      this[Ql] = null, this[Vl]._mB()
    },
    _fK: function (t) {
      var i = this._l3,
        n = this._k6.ratio,
        e = this[Wa];
      if (!i._fQ()) {
        var s = i[ed]([t[0], t[1]]);
        return s[0] *= n, s[1] *= n, n *= e, s[2] = t[2] * n, s[3] = t[3] * n, s
      }
      var h = new yB,
        r = i[ed]([t[0], t[1]]);
      return h.add(r[0], r[1]), r = i.transform([t[0] + t[2], t[1]]), h.add(r[0], r[1]), r = i[ed]([t[0], t[1] + t[3]]), h.add(r[0], r[1]), r = i[ed]([t[0] + t[2], t[1] + t[3]]), h.add(r[0], r[1]), [h.x * n, h.y * n, h[Yt] * n, h[Wt] * n]
    },
    _hN: function (t, i) {
      var n = this._k6;
      if (n[Yt] && n[Wt]) {
        var e = i._48(t.x, t.y, t[Yt], t[Wt]);
        if (e && e.width && e[Yt]) {
          var s = this.scale * this.ratio,
            h = this[Vl],
            r = {};
          1e-6 < e.x && (r[Kt] = i._54(0, 0, e.x, i[Wt], s)), 1e-6 < i[Yt] - e[Bt] && (r[Bt] = i._54(e.right, 0, i[Yt] - e[Bt], i[Wt], s)), 1e-6 < e.y && (r.top = i._54(e.x, 0, e[Yt], e.y, s)), 1e-6 < i[Wt] - e[Ft] && (r[Ft] = i._54(e.x, e[Ft], e[Yt], i[Wt] - e[Ft], s)),
            function (t) {
              var i = !0;
              for (var n in t) {
                i = !1;
                break
              }
              return i
            }(r) || h._4Y(r);
          var a = i._jD(t.x, t.y),
            o = (a[0] - e.x) * s,
            f = (a[1] - e.y) * s,
            c = e[Yt] * s,
            u = e.height * s;
          o = Math[or](o), f = Math[or](f), c = Math[or](c), u = Math[or](u);
          var _ = this[md];
          return _ || ((_ = this[md] = x.createElement(ha)).g = _[ra](aa)), _[Yt] = c, _[Wt] = u, Z$(_.g), _.g[Mo](n, o, f), {
            x: o = a[0] * s - o,
            y: f = a[1] * s - f,
            canvas: _
          }
        }
      }
    },
    _nJ: function (t, i, n, e) {
      this[Vl]._nU(t, i, n, e)
    },
    _hO: function (t) {
      this._oB5._jR(t)
    }
  });

  function Z$(t) {
    t[j$ = j$ || ("imageSmoothingEnabled" in CanvasRenderingContext2D.prototype ? "imageSmoothingEnabled" : "mozImageSmoothingEnabled" in CanvasRenderingContext2D.prototype ? "mozImageSmoothingEnabled" : "msImageSmoothingEnabled" in CanvasRenderingContext2D[_] ? "msImageSmoothingEnabled" : "webkitImageSmoothingEnabled" in CanvasRenderingContext2D.prototype ? "webkitImageSmoothingEnabled" : "imageSmoothingEnabled")] = !1
  }
  Object[it](X$[_], {
    width: {
      get: function () {
        return this[od][Qn]
      }
    },
    height: {
      get: function () {
        return this._oAX[wd]
      }
    },
    rotate: {
      get: function () {
        return this._l3._fQ()
      }
    },
    tx: {
      get: function () {
        return this._l3._97()[0]
      }
    },
    ty: {
      get: function () {
        return this._l3._97()[1]
      }
    },
    ratio: {
      get: function () {
        if (this._k6) return this._k6.ratio
      }
    },
    scale: {
      get: function () {
        return this._l3._i4()
      },
      set: function (t) {
        this._hH(t)
      }
    },
    renderScale: {
      get: function () {
        return this[Wa] * this.ratio
      }
    },
    uis: {
      get: function () {
        return this._o0
      }
    },
    length: {
      get: function () {
        return this._o0[N]
      }
    },
    viewportBounds: {
      get: function () {
        return this._viewport[Od]()
      }
    }
  });
  var z$ = EN({
    constructor: function () {
      this._hR = [], this._kG = new yB, this._hQ = ON ? 20 : 50
    },
    _hQ: 20,
    _hR: null,
    _nK: !1,
    _kG: null,
    _mB: function () {
      this._nK = !1, this._hR[N] = 0, this[Ad] = null, this._kG[St]()
    },
    _jQ: function () {
      return 0 == this._hR[N] && !this[Ad]
    },
    _nU: function (t, i, n, e) {
      n <= 0 || e <= 0 || this._hR.push([t, i, n, e])
    },
    _jR: function (t) {
      this._nU(t.x, t.y, t[Yt], t.height)
    },
    _4Y: function (t) {
      var i = this._kG;
      for (var n in t) {
        var e = t[n].getGlobalBounds();
        i.add(e)
      }
      this[Ad] = t
    },
    _oB4: function (t, i) {
      for (var n = [], e = this._hR, s = 0, h = e[N]; s < h; s++) {
        var r = e[s];
        t[Hl](r[0], r[1], r[2], r[3]) && (n.push(r), this._kG[Id](r[0], r[1], r[2], r[3]))
      }
      this._hR = n, this._nK = i || n[N] >= this._hQ
    },
    _fM: function (t, i, n, e) {
      if (!this._kG[Xt](t, i, n, e)) return !1;
      if (this._nK) return !0;
      if (this[Ad]) {
        var s = this[Ad];
        for (var h in s)
          if (s[h][Hl](t, i, n, e)) return !0
      }
      for (var r, a = 0, o = this._hR.length; a < o; a++)
        if (r = this._hR[a], yB[Hl](t, i, n, e, r[0], r[1], r[2], r[3])) return !0;
      return !1
    },
    _l8: function (t, i) {
      if (this._jQ()) return !1;
      if (t[Ua](), this._nK) return K$(t, (r = i([this._kG.x, this._kG.y, this._kG[Yt], this._kG[Wt]]))[0], r[1], r[2], r[3]), void t.clip();
      if (this[Ad])
        for (var n in this[Ad]) K$(t, (r = this._viewportClips[n][Sd])[0], r[1], r[2], r[3]);
      for (var e = this._hR, s = 0, h = e[N]; s < h; s++) {
        var r;
        K$(t, (r = i(e[s]))[0], r[1], r[2], r[3])
      }
      t.clip()
    }
  });

  function K$(t, i, n, e, s) {
    e = KN(i + e) - (i = zN(i)), s = KN(n + s) - (n = zN(n)), t.clearRect(i, n, e, s), t[cr](i, n, e, s)
  }

  function zN(t) {
    return Math.floor(t)
  }

  function KN(t) {
    return Math.ceil(t)
  }
  z$[Md] = function (t, i, n, e) {
    return t instanceof Object && (i = t.y, n = t[Yt], e = t.height, t = t.x), n = KN(t + n) - (t = zN(t)), e = KN(i + e) - (i = zN(i)), [t, i, n, e]
  }, z$[kd] = zN, z$._gB = KN, OF[Cd] = Ld, OF.NAVIGATION_SCROLLBAR = Rd, sB[Pd] = OF[Dd];
  var J$ = EN({
    _kL: function () {
      yN(this, J$, Nd, arguments), this[Bd]._kL(), this._dU && this._dU[St]()
    },
    _dU: null,
    enableCrossLine: function (t) {
      this._69 = !0, t ? this._dU || (this._dU = new G$) : this._dU && (this._dU = null, this._o0[Mt](function (t) {
        t.data[Fd] && t.data.to && t[Gd]._hB && t[Gd]._hB.__kLSegments && (t[Gd]._hB[If] = null)
      }))
    },
    _o9H: function (t, i) {
      return (t = t.$data.zIndex || 0) - (i[Nu][zl] || 0)
    },
    super: X$,
    constructor: function (t, i) {
      this._lW = t, UN(i) && (i = x[ad](i)), i && i.tagName || (i = x.createElement($n)), gN(this, J$, [i]), this._topCanvas = new IW(this, this[od]), this._hV = [], this._lW._$b.addListener(this._1N, this), this._lW._1I[Xi](this._o98, this), this._lW._16[Xi](this._7Y, this), this._lW._$p[Xi](this._31, this), this._lW._$r[Xi](this._43, this), this._oB7 = {}, this._47(sB[Pd], !0)
    },
    _60: function (t) {
      yN(this, J$, $d, arguments), this[Bd]._60(t)
    },
    _hS: function (t) {
      if (t.id || (t = this._o0.getById(t)), !t) return !1;
      this._o0[o](t), t[Rs](), t[gd] && this._hO(t.__kG), this[xd] = !0
    },
    _hU: function () {
      this._o0[Mt](function (t) {
        t.destroy()
      }), this._o0[St]()
    },
    _fC: function (t, i) {
      var n = t[Ki] || t;
      return n._$s && (n._$s = !1, n._jC = this._5V(n, i)), !1 !== n._jC
    },
    _5V: function (t, i) {
      return !(!this._40(t, i) || this._lW._jCFilter && !1 === this._lW[Yd](t, i))
    },
    _o9Q: function (t) {
      return this._lW._3L == gW(t)
    },
    _40: function (t, i) {
      if (!1 === t.visible) return !1;
      if (!(t instanceof xY)) return this._lW._3L == gW(t) && !t._eS;
      var n = t[Wd],
        e = t.toAgent;
      if (!n || !e) return !1;
      if (n == e && !t[Ud]()) return !1;
      if (t[Hd]()) {
        var s = t[Vd](!0);
        if (s && !s._fC(t, i)) return !1
      }
      return !(!this._fC(n, i) || !this._fC(e, i))
    },
    _oAZ: function (t) {
      if (t._oAH) return {
        x: t.$x + t.uiBounds.x,
        y: t.$y + t[jd].y,
        width: t[jd][Yt],
        height: t[jd][Wt]
      }
    },
    _2Z: function (t) {
      var i = this._lY(t);
      if (i) {
        var n = this[Ul](i);
        if (n) return new yB(n)
      }
    },
    _fB: function (t, i, n) {
      return t[Wo](i[0], i[1], n)
    },
    hitTest: function (t, i) {
      var n = yN(this, J$, Wo, arguments);
      if (n) {
        t = this[bd](t), i = this[vd](i);
        var e = n.hitTest(t[0], t[1], i, !0);
        if (e instanceof NY) return e
      }
      return n
    },
    _41: function (t) {
      return this[Ss](t)
    },
    _7Q: function (t) {
      yN(this, J$, Xd, arguments), this[Bd]._jE(this.width, this[Wt])
    },
    _mD: 1,
    _dK: null,
    _94: null,
    _95: null,
    _o0: null,
    _o2: null,
    _k6: null,
    _oB5: null,
    _6W: !1,
    _oAH: !1,
    _l3: null,
    _4U: function (t, i) {
      for (var n = this._dK, e = 0, s = n[N]; e < s; e++)
        if (!1 === t[p](i, n[e])) return !1
    },
    _fD: function (t, i) {
      this._o0[Mt](t, i)
    },
    _10: function (t, i) {
      for (var n = this._dK, e = n[N] - 1; 0 <= e; e--)
        if (!1 === t[p](i, n[e])) return !1
    },
    _4V: function (t, i) {
      this._o0.forEachReverse(t, i)
    },
    _3O: function (t, i, n) {
      yN(this, J$, Zd, arguments), this[zd] = {
        value: t
      }
    },
    _dO: function () {
      this._4S(!0), this[Kd] || (this[Kd] = !0, this._lW && this._lW[Jd] && this._l3[Qd]([this[Yt] / 2, this[Wt] / 2]))
    },
    _gJ: function () {
      if (!this[Xu] && this._6W) {
        if (this[Nl] = null, this._6W = !1, this._oAH && this._lW && this._lW._$s && (this._lW._$s = !1, this._lW[Mt](function (t) {
            t[qd](!0)
          })), yN(this, J$, tv, arguments), this[iv]) {
          this._82 && this._82._kM();
          var t = this._95Changed[Li],
            i = this[iv].old;
          this._95Changed = null, this._lW._55(new MB(this._lW, nv, t, i))
        }
        this[zd] && (this[zd] = !1, this._82 && this._82._3O && this._82._3O(this._viewport.width * this._viewport[Wa], this[kl][Wt] * this._viewport[Wa]), this._lW._55(new MB(this._lW, Dl, this[kl])))
      }
    },
    _hV: null,
    _dS: function (t) {
      var i = t[Nu];
      if (!t._1L && !i._6W && !i._$s) return !1;
      var n = t[bu];
      return yN(this, J$, ev, arguments) || n
    },
    _o9O: function (t) {
      var i = t[Nu];
      i[sv] && (i[sv] = !1, t._4H()), i[Mn] && i._jB() && (t._5Y(), i.__6W = !1), (t._1L || i._6W) && (i._6W = !1, t.validate())
    },
    _hW: function (t, i) {
      var n = t[ea];
      t.scale(n, n), t[ed].apply(t, this._l3.m);
      for (var e = this[hv], s = [], h = 0, r = i[N]; h < r; h++) {
        var a = i[h];
        this._dU && a[Ki][Fd] && a[Ki].to && this._dU[yl](a[Gd]._hB), a._kL(t, e), a._kF && a._kF.length && s[M](a)
      }
      if (s[N])
        for (h = 0, r = s[N]; h < r; h++) s[h]._9W(t, e)
    },
    render: function (t, i) {
      if (i.length) {
        if (t[Ga](), ON) try {
          this._hW(t, i)
        } catch (t) {} else this._hW(t, i);
        t[Ka]()
      }
    },
    _hY: function (t, i, n) {
      var e, s;
      t[Ga](), t.translate(-n.x * i, -n.y * i), t[Wa](i, i);
      for (var h = this._o0._kE.slice(), r = [], a = 0, o = (h = this._jN(h))[N]; a < o; a++)(e = h[a])[Wl] && (s = this[Ul](e), n[Xt](s.x, s.y, s[Yt], s[Wt]) && (e._kL(t, i), e._kF && e._kF.length && r[M](e)));
      if (r[N])
        for (a = 0, o = r[N]; a < o; a++) r[a]._9W(t, i);
      t[Ka]()
    },
    _15: function (t, i) {},
    _1T: function () {
      for (var t, i, n = this._o0._kE, e = new yB, s = n[N] - 1; 0 <= s; s--)(t = n[s])._jC && (i = t[jd], e[Id](t.$x + i.x, t.$y + i.y, i.width, i[Wt]));
      var h = this._95;
      (this._95 = e).equals(h) || this._15(h, e)
    },
    _6B: function () {
      this._dK[N] = 0, this._94 = {}
    },
    _mF: function () {
      this._mB()
    },
    _iZ: function () {
      this._mB(), this._iZed = !0, this._6W = !1, this._topCanvas.clear(), this._93[N] = 0, this._82 && (this._82._iZ(), delete this._82)
    },
    _lY: function (t) {
      return this._o0.getById(t.id || t)
    },
    _$h: function (t) {
      return this._fN(t)
    },
    _i0: function (t, i) {
      var n = this.toCanvas(t, i);
      return {
        x: n[0],
        y: n[1]
      }
    },
    _fN: function (t, i) {
      var n = this[bd](t, i);
      return {
        x: n[0],
        y: n[1]
      }
    },
    _$j: null,
    _43: function (t) {
      var i = t.source,
        n = t.data;
      if (n)
        if (this[ke]) {
          if (HN(n))
            for (h = 0, r = n.length; h < r; h++) s = n[h].id, (e = this._o0.getById(s)) && (e.selected = i.containsById(s), e[rv]());
          else {
            if (s = n.id, !(e = this._o0.getById(s))) return;
            e[av] = i[mt](s), e[rv]()
          }
          this._d7()
        } else {
          var e, s;
          if (this._$j || (this._$j = {}), HN(n))
            for (var h = 0, r = n[N]; h < r; h++) s = n[h].id, this._$j[s] = !0;
          else s = n.id, this._$j[s] = !0
        }
    },
    _lW: null,
    _dW: function (t) {
      var i = t.uiClass;
      if (i) return new i(t, this._lW)
    },
    _1N: function (t) {
      if (!this[ke]) return !1;
      var i = t[pi],
        n = t[Ti];
      ov == n && this._lW.invalidateVisibility(), fv == n ? (this._hS(i.id), this._lR(i)) : cv == n && i._jB() && t[Li] && this._6C(i);
      var e = this._o0[It](i.id);
      e && e._oAH && e.onPropertyChange(t) && this._d7()
    },
    _45: function (t) {
      var i = this._lY(t);
      i && (i[uv](), this._d7())
    },
    _o98: function (t) {
      if (!this._oAH) return !1;
      switch (t[Ti]) {
        case BB[nn]:
          this._lR(t[Ki]);
          break;
        case BB.KIND_REMOVE:
          this._i2(t[Ki]);
          break;
        case BB[sn]:
          this._jS(t.data)
      }
    },
    _mB: function () {
      this._oB7 = {}, this._hU(), this.clear()
    },
    _oB7: null,
    _lR: function (t) {
      var i = this._dW(t);
      i && (this._o0.add(i), this[ke] && (this[_v][t.id] = t), this._d7())
    },
    _i2: function (t) {
      if (Array[W](t)) {
        for (var i, n = [], e = 0, s = t[N]; e < s; e++) i = t[e].id, n.push(i), delete this[_v][i];
        t = n
      } else t = t.id, delete this._oB7[t], t = [t];
      t[Mt](function (t) {
        this._hS(t)
      }, this), this._d7()
    },
    _jS: function (t) {
      this._mB()
    },
    _7Y: function (t) {
      if (!this[ke]) return !1;
      t[pi] instanceof wY && !this[_v][t[pi].id] && (t.oldValue && (this._45(t[Ii]), t.oldValue.__6W = !0), t[Li] && (this._45(t[Li]), t[Li][Mn] = !0), this._6C(t.source))
    },
    _31: function (t) {
      if (!this[ke]) return !1;
      t[pi] instanceof wY && !this._oB7[t.source.id] && this._6C(t.source)
    },
    _32: function (t) {
      if (t[lv]) {
        var i = t.getEdgeBundle(!0);
        if (!i) return t._edgeBundleInvalidateFlag = !1, void t[dv]();
        i.validate(this._lW), i._oBF(function (t) {
          t[dv]()
        })
      }
    },
    _$v: function (t) {
      this._lW;
      var i, n = this._lW[vv],
        e = this._o0,
        s = [],
        h = 1;
      if (n[bv](function (t) {
          if (t instanceof xY) return this._32(t), void s[M](t);
          (l = this._dW(t)) && (e.add(l), t[yv] = h++)
        }, this), e[N]) {
        var r = e._kE;
        for (h = r.length - 1; 0 <= h; h--) l = r[h], this._46(l, l[Nu], t)
      }
      h = 0;
      for (var a = s[N]; h < a; h++)
        if (i = s[h], l = this._dW(i)) {
          this._46(l, i, t), e.add(l);
          var o = i[Wd],
            f = i[gv],
            c = o[yv] || 0;
          o != f && (c = Math.max(c, f[yv] || 0)), i[yv] = c
        } if (s[N] && e._kE[Zl](function (t, i) {
          return t[Nu][yv] - i[Nu][yv]
        }), this._$j) {
        var u = n[Rn];
        for (var _ in this._$j) {
          var l;
          u.containsById(_) && (l = e.getById(_)) && (l.selected = !0)
        }
        this._$j = null
      }
      this._7U()
    },
    _oB0: function (t, i) {
      if (t) return this._$v();
      var n, e, s = this._d7BoundsFlag;
      for (var h in this[xd] = !1, this._oB7) {
        var r = this._oB7[h];
        r instanceof wY ? this._6C(r) : this._6D(r)
      }
      this[_v] = {};
      for (var a = this._o0._kE, o = [], f = a[N] - 1; 0 <= f; f--)(e = (n = a[f])[Nu]) instanceof xY ? (this._32(e), o.push(n)) : this._46(n, e, i) && !s && (s = !0);
      if (o[N]) {
        f = 0;
        for (var c = o[N]; f < c; f++) n = o[f], this._46(n, n[Nu], i) && !s && (s = !0)
      }
      s && this._7U()
    },
    _46: function (t, i, n) {
      if (i instanceof xY) return i[sv] && (i.__4H = !1, t._4H()), this._dS(t, n);
      if (i[Mn] && i._jB() && (t._5Y(), i[Mn] = !1), this._dS(t, n)) {
        var e = this._50(i);
        return e && (e.__6W = !0), i[Ev]() && i[xv](function (t) {
          t.__4H = !0
        }, this), !0
      }
    },
    _34: function (t, i) {
      var n = t[Wd],
        e = t[gv],
        s = i[pv](n.id);
      if (n == e) return s;
      var h = i[pv](e.id);
      return Math.max(s, h)
    },
    _36: function (t, i) {
      var n = this.graphModel._gQ(t);
      return n ? i.getIndexById(n.id) : 0
    },
    _6C: function (t) {
      var i = this._o0,
        n = i[It](t.id);
      if (!n) throw new Error(Tv + t[P_] + mv);
      var e = this._36(t, i),
        s = [n];
      t[T]() && iN(t, function (t) {
        t instanceof wY && (n = i.getById(t.id)) && s.push(n)
      }, this), this._4Z(i, e, s)
    },
    _6D: function (t) {
      var i = this._o0.getById(t.id);
      if (i) {
        var n = this._34(t, this._o0);
        this._o0[wv](i, n)
      }
    },
    _4Z: function (i, n, t) {
      var e = new hB;

      function s(t) {
        e.add(t)
      }
      aN(t, function (t) {
        n = i.setIndexAfter(t, n), t.$data[xv](s)
      }, this), 0 != e[N] && e.forEach(this._6D, this)
    },
    _50: function (t) {
      var i = yY(t);
      return i && i[cv] ? i : null
    },
    _80: null,
    _82: null,
    _47: function (t, i) {
      if (!i && t == this._80) return !1;
      this._80 = t, this._82 && (this._82._iZ(), delete this._82), t != OF[Dd] ? t != OF.NAVIGATION_BUTTON || (this._82 = new wW(this, this[od])) : this._82 = new OW(this, this[od])
    },
    _2Y: function (t, i) {
      this._82 && this._82._kM(), this._lW._55(new MB(this._lW, ed, t, i))
    },
    _7X: function (t, i) {
      this._lW._55(new MB(this._lW, Wa, t, i))
    },
    _3Z: function (t, i) {
      this[iv] = {
        value: t,
        old: i
      }
    },
    _83: function () {
      this._7N()
    }
  });
  Object.defineProperties(J$[_], {
    _viewportBounds: {
      get: function () {
        return this[Ov]
      }
    },
    _scale: {
      get: function () {
        return this.scale
      },
      set: function (t) {
        this._hH(t)
      }
    },
    _tx: {
      get: function () {
        return this.tx
      }
    },
    _ty: {
      get: function () {
        return this.ty
      }
    },
    graphModel: {
      get: function () {
        return this._lW._lWModel
      }
    }
  });
  var Q$ = X$,
    q$ = {};

  function tY(t) {
    var n = [];
    return t[Mt](function (t, i) {
      n.push(-t)
    }), n
  }
  q$[E] = function () {
    return [1, 0, 0, 1, 0, 0]
  }, q$[Av] = function (t, i) {
    var n = i[0],
      e = i[1],
      s = i[2],
      h = i[3],
      r = i[4],
      a = i[5],
      o = n * h - e * s;
    return o ? (o = 1 / o, t[0] = h * o, t[1] = -e * o, t[2] = -s * o, t[3] = n * o, t[4] = (s * a - h * r) * o, t[5] = (e * r - n * a) * o, t) : null
  }, q$[ic] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1],
      u = n[2],
      _ = n[3],
      l = n[4],
      d = n[5];
    return t[0] = e * f + h * c, t[1] = s * f + r * c, t[2] = e * u + h * _, t[3] = s * u + r * _, t[4] = e * l + h * d + a, t[5] = s * l + r * d + o, t
  }, q$.mul = q$[ic], q$[kt] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = Math.sin(n),
      c = Math.cos(n);
    return t[0] = e * c + h * f, t[1] = s * c + r * f, t[2] = e * -f + h * c, t[3] = s * -f + r * c, t[4] = a, t[5] = o, t
  }, q$[Wa] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1];
    return t[0] = e * f, t[1] = s * f, t[2] = h * c, t[3] = r * c, t[4] = a, t[5] = o, t
  }, q$[Ya] = function (t, i, n) {
    var e = i[0],
      s = i[1],
      h = i[2],
      r = i[3],
      a = i[4],
      o = i[5],
      f = n[0],
      c = n[1];
    return t[0] = e, t[1] = s, t[2] = h, t[3] = r, t[4] = e * f + h * c + a, t[5] = s * f + r * c + o, t
  }, q$[ed] = function (t, i) {
    var n = i[0],
      e = i[1];
    return [n * t[0] + e * t[2] + t[4], n * t[1] + e * t[3] + t[5]]
  }, q$[cd] = function (t, i) {
    return q$[ed](q$[Av]([], t), i)
  };
  var iY = Math.PI + Math.PI;

  function nY(t) {
    return (t %= iY) < 0 && (t += iY), t
  }
  var eY = WN,
    sY = EN({
      equals: function (t) {
        if (!t || !Array[W](t)) return !1;
        for (var i = this.m, n = 0; n < i[N];) {
          if (i[n] != t[n]) return !1;
          ++n
        }
        return !0
      },
      constructor: function (t) {
        this.m = t || q$[E](), this.im = []
      },
      listener: null,
      _6W: !0,
      invalidate: function () {
        return this._6W = !0, (!this[Iv] || !this[Qt](this._oAackM)) && (this[Wi] && this.listener({
          target: this,
          kind: Rl
        }), this._oAackM = this.m.slice(), this)
      },
      validate: function () {
        return this._6W = !1, q$[Av](this.im, this.m), this
      },
      translate: function (t, i) {
        return eY(t) && (t = [t, i], i = arguments[2]), !1 !== i ? (this.m[4] += t[0], this.m[5] += t[1]) : q$[Ya](this.m, this.m, t), this[Rl]()
      },
      translateTo: function (t, i) {
        return eY(t) && (t = [t, i], i = arguments[2]), i && (i /= this._i4(), q$[Wa](this.m, this.m, [i, i])), this.m[4] = t[0], this.m[5] = t[1], this.invalidate()
      },
      scale: function (t, i) {
        return Y == typeof t && (t = [t, t]), i ? (q$[Ya](this.m, this.m, i), q$.scale(this.m, this.m, t), q$[Ya](this.m, this.m, tY(i))) : q$.scale(this.m, this.m, t), this.invalidate()
      },
      rotate: function (t, i) {
        return i ? (q$[Ya](this.m, this.m, i), q$[kt](this.m, this.m, t), q$.translate(this.m, this.m, tY(i))) : q$.rotate(this.m, this.m, t), this.invalidate()
      },
      transform: function (t) {
        return q$[ed](this.m, t)
      },
      reverseTransform: function (t) {
        return q$[ed](this._52(), t)
      },
      toString: function () {
        return sd + this.m.join(J) + Q
      },
      _52: function () {
        return this._6W && this.validate(), this.im
      },
      _fP: function () {
        var t = this.m[0],
          i = this.m[1],
          n = this.m[2],
          e = this.m[3];
        return [Math.sqrt(t * t + n * n), Math.sqrt(i * i + e * e)]
      },
      _i4: function () {
        var t = this.m[0],
          i = this.m[2];
        return Math[Gt](t * t + i * i)
      },
      _97: function () {
        return [this.m[4], this.m[5]]
      },
      _dY: function () {
        var t = this.m[0],
          i = this.m[1],
          n = this.m[2],
          e = this.m[3];
        return [nY(Math[Pt](i, e)), nY(Math[Pt](-n, t))]
      },
      _fQ: function () {
        return nY(Math[Pt](this.m[1], this.m[3]))
      }
    });

  function hY(t, i, n, e, s, h, r, a) {
    var o = ((t * e - i * n) * (s - r) - (t - n) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r)),
      f = ((t * e - i * n) * (h - a) - (i - e) * (s * a - h * r)) / ((t - n) * (h - a) - (i - e) * (s - r));
    if (isNaN(o) || isNaN(f)) return !1;
    if (n <= t) {
      if (!(n <= o && o <= t)) return !1
    } else if (!(t <= o && o <= n)) return !1;
    if (e <= i) {
      if (!(e <= f && f <= i)) return !1
    } else if (!(i <= f && f <= e)) return !1;
    if (r <= s) {
      if (!(r <= o && o <= s)) return !1
    } else if (!(s <= o && o <= r)) return !1;
    if (a <= h) {
      if (!(a <= f && f <= h)) return !1
    } else if (!(h <= f && f <= a)) return !1;
    return !0
  }

  function rY(t, i, n, e) {
    return [t * e - i * n, t * n + i * e]
  }
  var aY = EN({
      constructor: function () {},
      x: 0,
      y: 0,
      width: 0,
      height: 0,
      rotate: 0,
      set: function (t, i, n, e, s, h) {
        return this.x = t, this.y = i, this[Yt] = n, this[Wt] = e, this[kt] = s, this[Dt] = Math.cos(s), this[Nt] = Math.sin(s), this.scale = h, this._globalBounds = null, this
      },
      _jD: function (t, i) {
        return t -= this.x, i -= this.y, this[kt] ? rY(t, i, this[Nt], this[Dt]) : [t, i]
      },
      _98: function (t) {
        var i = new yB;
        return i.add(this._jD(t.x, t.y)), i.add(this._jD(t.x + t.width, t.y)), i.add(this._jD(t.x, t.y + t.height)), i.add(this._jD(t.x + t[Yt], t.y + t[Wt])), i
      },
      _i5: function (t, i) {
        if (this[kt]) {
          var n = rY(t, i, Math.sin(-this[kt]), Math.cos(-this.rotate));
          t = n[0], i = n[1]
        }
        return [this.x + t, this.y + i]
      },
      _6E: function (t, i) {
        var n = this._jD(t, i);
        return t = n[0], i = n[1], 0 <= t && 0 <= i && t <= this[Yt] && i <= this.height
      },
      intersects: function (t, i, n, e) {
        if (!this.rotate) return yB[Hl](this.x, this.y, this[Yt], this[Wt], t, i, n, e);
        if (!n || !e) return this._6E(t, i);
        var s = this.getGlobalBounds();
        if (!s[Hl](t, i, n, e)) return !1;
        for (var h = s[Ns], r = 0; r < h[N];) {
          var a = h[r];
          if (yB[Zt](t, i, n, e, a[0], a[1])) return !0;
          r++
        }
        var o = [
          [t, i],
          [t + n, i],
          [t, i + e],
          [t + n, i + e]
        ];
        for (r = 0; r < o[N];) {
          if (a = o[r], this._6E(a[0], a[1])) return !0;
          r++
        }
        return function (t, i) {
          for (var n = 0, e = t[N]; n < e;) {
            for (var s = t[n], h = t[(n + 1) % e], r = 0; r < 4;) {
              var a = i[r],
                o = i[(r + 1) % e];
              if (hY(s[0], s[1], h[0], h[1], a[0], a[1], o[0], o[1])) return !0;
              r++
            }
            n++
          }
          return !1
        }(h, o)
      },
      getGlobalBounds: function () {
        return this[Sv] || (this[Sv] = this._84(0, 0, this[Yt], this[Wt])), this[Sv]
      },
      _84: function (t, i, n, e) {
        if (!this.rotate) return new yB(this.x + t, this.y + i, n, e);
        var s = [],
          h = new yB,
          r = this._i5(t, i);
        return s[M](r), h.add(r[0], r[1]), r = this._i5(t + n, i), s[M](r), h.add(r[0], r[1]), r = this._i5(t, i + e), s.push(r), h.add(r[0], r[1]), r = this._i5(t + n, i + e), s.push(r), h.add(r[0], r[1]), h[Ns] = s, h
      },
      _54: function (t, i, n, e, s) {
        var h;
        if (this[kt]) {
          var r = this._i5(t, i);
          h = (new aY).set(r[0], r[1], n, e, this[kt], this.scale)
        } else h = (new aY).set(this.x + t, this.y + i, n, e, 0, this[Wa]);
        return h[Sd] = [Math[or](s * t), Math[or](s * i), Math[or](s * n), Math[or](s * e)], h
      },
      _48: function (t, i, n, e) {
        if (!this[kt]) {
          var s = yB[qt](this.x, this.y, this[Yt], this.height, t, i, n, e);
          return s && s.offset(-this.x, -this.y), s
        }
        var h = this._jD(t, i);
        return t = h[0], i = h[1], yB[qt](0, 0, this[Yt], this[Wt], h[0], h[1], n, e)
      },
      equals: function (t) {
        return this.x == t.x && this.y == t.y && this[Yt] == t.width && this.height == t.height && this.rotate == t.rotate
      },
      toString: function () {
        return this.x + J + this.y + J + this.width + J + this[Wt] + J + this[kt]
      },
      toJSON: function () {
        return {
          x: this.x,
          y: this.y,
          width: this.width,
          height: this.height,
          rotate: this[kt],
          scale: this[Wa]
        }
      }
    }),
    oY = {
      setStyle: XB,
      setStyles: jB,
      addRule: ZB,
      pre: VB
    };

  function fY(t, i, n) {
    if ((n = n || i.toAgent) == t) return !1;
    var e = t.getEdgeBundle(n);
    return e || (e = new xU(t, n), t[Mv][n.id] = e), e._jZ(i, t)
  }

  function cY(t, i, n) {
    if ((n = n || i.toAgent) == t) return !1;
    var e = t.getEdgeBundle(n);
    return e ? e._e5(i, t) : void 0
  }

  function uY(t, i, n) {
    if (n === k && (n = i.toAgent), n != t) {
      if (t._8M || (t._8M = new hB), !1 === t._8M.add(i)) return !1;
      t._9O++
    }
  }

  function _Y(t, i, n) {
    if (!t._8M || !1 === t._8M[o](i)) return !1;
    t._9O--, cY(t, i, n)
  }

  function lY(t, i) {
    if (i.fromAgent != t) {
      if (t._9Q || (t._9Q = new hB), !1 === t._9Q.add(i)) return !1;
      t[kv]++
    }
  }

  function dY(t, i) {
    if (!t._9Q || !1 === t._9Q[o](i)) return !1;
    t._oAC--, cY(i[Wd], i, t)
  }

  function vY(t, i, n, e) {
    this.source = t, this[Ti] = i, this[Ii] = e, this.value = n, this[an] = OF[Cv]
  }

  function bY(t) {
    this.id = ++TN, this._d0 = {}, this._kD = {}, t && (this[Lv] = t)
  }

  function yY(t, i) {
    if (i === k && (i = t instanceof xY), i) {
      if (t[Rv]()) return null;
      var n = yY(t.from, !1);
      if (t[Ud]()) return n;
      for (var e = yY(t.to, !1); null != n && null != e;) {
        if (n == e) return n;
        if (n.isDescendantOf(e)) return e;
        if (e[Pv](n)) return n;
        n = yY(n, !1), e = yY(e, !1)
      }
      return null
    }
    for (var s = t[Pi]; null != s;) {
      if (s._jB()) return s;
      s = s[Pi]
    }
    return null
  }

  function gY(t, i) {
    i[Pi] ? i.parent.setChildIndex(i, i.parent[Dv] - 1) : t[Nv].setIndex(i, t[Nv][N] - 1)
  }

  function EY(t, i) {
    i[Pi] ? i.parent[Bv](i, 0) : t.roots[An](i, 0)
  }
  dN(vY, MB), bY[_] = {
    _kD: null,
    getStyle: function (t) {
      return this._kD[t]
    },
    setStyle: function (t, i) {
      var n = this._kD[t];
      return !(n === i || n && i && n[Qt] && n.equals(i)) && this[on](t, i, new vY(this, t, i, n), this._kD)
    },
    putStyles: function (t, i) {
      for (var n in t) {
        var e = t[n];
        i ? this._kD[n] = e : this[Fv](n, e)
      }
    },
    _$s: !0,
    invalidateVisibility: function (t) {
      this._$s = !0, t || (this instanceof wY && this.hasEdge() && this[xv](function (t) {
        t._$s = !0
      }), this._jB() && this[T]() && this[Gv](function (t) {
        t.invalidateVisibility()
      }))
    },
    onParentChanged: function (t, i) {
      this[qd]()
    },
    _jB: function () {
      return !this._4E && this instanceof PY
    },
    invalidate: function () {
      this[O](new SB(this, $v, Rl))
    },
    _oBY: null,
    addUI: function (t, i) {
      if (this._oBY || (this[Yv] = new hB), t.id || (t.id = ++TN), this._oBY[mt](t.id)) return !1;
      var n = {
        id: t.id,
        ui: t,
        bindingProperties: i
      };
      this._oBY.add(n);
      var e = new SB(this, $v, en, n);
      return this[O](e)
    },
    removeUI: function (t) {
      if (!this[Yv]) return !1;
      var i = this[Yv][It](t.id || t);
      if (!i) return !1;
      this._oBY.remove(i), this[O](new SB(this, $v, o, i))
    },
    clearUIs: function () {
      this[Wv] && this[Wv].toDatas()[Mt](function (t) {
        this[Uv](t.ui)
      } [Ye](this))
    },
    toString: function () {
      return this.$name || this.id
    },
    type: Hv,
    _4E: !1,
    _jC: !0,
    inGroup: function (t) {
      var i = yY(this);
      return i == t || i && t instanceof PY && i.isDescendantOf(t)
    }
  }, dN(bY, FB), pN(bY.prototype, [fv, P_, zl, Vv]), qN(bY[_], {
    enableSubNetwork: {
      get: function () {
        return this._4E
      },
      set: function (t) {
        if (this._4E != t) {
          var i = this._4E;
          this._4E = t, this instanceof wY && this._13(), this.onEvent(new MB(this, ov, t, i))
        }
      }
    },
    bindingUIs: {
      get: function () {
        return this._oBY
      }
    },
    styles: {
      get: function () {
        return this._kD
      },
      set: function (t) {
        if (this._kD != t) {
          for (var i in this._kD) i in t || (t[i] = k);
          this.putStyles(t), this._kD = t
        }
      }
    }
  }), wF[jv] = yY;
  var xY = function (t, i, n) {
    this.id = ++TN, this._d0 = {}, this._kD = {}, n && (this.$name = n), this[Xv] = t, this.$to = i, this.connect()
  };

  function pY(t, i) {
    return i = i || new hB, t[xv](function (t) {
      i.add({
        id: t.id,
        edge: t,
        fromAgent: t.$from._eS,
        toAgent: t.$to._eS
      })
    }), t[Gv](function (t) {
      t instanceof wY && pY(t, i)
    }), i
  }

  function TY(t, i, n) {
    if (t._gP)
      for (var e = t._gP; e;) {
        if (!1 === i[p](n, e)) return !1;
        e = e._jV
      }
  }

  function mY(t, i, n) {
    if (t._j7)
      for (var e = t._j7; e;) {
        if (!1 === i[p](n, e)) return !1;
        e = e._lB
      }
  }
  xY[_] = {
    $uiClass: eW,
    _lA: null,
    _jT: null,
    _lB: null,
    _jV: null,
    _fR: !1,
    type: Zv,
    otherNode: function (t) {
      return t == this[Fd] ? this.to : t == this.to ? this[Fd] : void 0
    },
    connect: function () {
      if (this._fR) return !1;
      if (!this.$from || !this.$to) return !1;
      if (this._fR = !0, this[Xv] != this.$to) {
        ! function (t, i) {
          if (t[kv]++, !t._j7) return t._j7 = i, t._kB = i;
          i._lA = t._kB, t._kB._lB = i, t._kB = i
        }(this.$to, this),
        function (t, i) {
          if (t._9O++, !t._gP) return t._gP = i, t._j9 = i;
          i._jT = t._j9, t._j9._jV = i, t._j9 = i
        }(this.$from, this), fY(this[Xv], this, this.$to);
        var t, i = this[Wd],
          n = this.toAgent;
        i != n && (this.$from._eS && (uY(i, this, n), t = !0), this.$to._eS && (lY(n, this), t = !0), t && fY(i, this, n))
      } else this[Xv]._jA(this)
    },
    disconnect: function () {
      if (!this._fR) return !1;
      if (this._fR = !1, this.$from != this.$to) {
        h = this.$from, r = this, h._9O--, h._j9 == r && (h._j9 = r._jT), r._jT ? r._jT._jV = r._jV : h._gP = r._jV, r._jV && (r._jV._jT = r._jT), r._jT = null, r._jV = null, cY(h, r, r.$to), e = this.$to, s = this, e._oAC--, e._kB == s && (e._kB = s._lA), s._lA ? s._lA._lB = s._lB : e._j7 = s._lB, s._lB && (s._lB._lA = s._lA), s._lA = null, s._lB = null, cY(this.$from, this, this.$to);
        var t, i = this[Wd],
          n = this[gv];
        i != n && (this[Xv]._eS && (_Y(i, this, n), t = !0), this.$to._eS && (dY(n, this), t = !0), t && cY(i, this, n))
      } else this.$from[zv](this);
      var e, s, h, r
    },
    isConnected: function () {
      return this._fR
    },
    isInvalid: function () {
      return !this[Xv] || !this.$to
    },
    isLooped: function () {
      return this[Xv] == this.$to
    },
    getEdgeBundle: function (t) {
      return t ? this._37() : this[Ud]() ? this[Xv]._4C : this.$from[Vd](this.$to)
    },
    hasEdgeBundle: function () {
      var t = this[Vd](!0);
      return t && 1 < t[Kv].length
    },
    _37: function () {
      var t = this[Wd],
        i = this.toAgent;
      return t === i ? this[Xv]._eS || this.$to._eS ? null : this[Xv]._4C : t[Vd](i)
    },
    _o91: null,
    hasPathSegments: function () {
      return this._o91 && !this[Oa][yn]()
    },
    isBundleEnabled: function () {
      return this[Jv] && !this[Qv]() && !this.edgeType
    },
    firePathChange: function (t) {
      this.onEvent(new MB(this, qv, t))
    },
    addPathSegment: function (t, i, n) {
      var e = new DG(i || kG, t);
      this[Oa] || (this[Oa] = new hB), this[Oa].add(e, n), this[tb](e)
    },
    addPathSegement: function () {
      return wF.log('change "edge.addPathSegement(...)" to "edge.addPathSegment(...)"'), this.addPathSegment[d](this, arguments)
    },
    removePathSegmentByIndex: function (t) {
      return this[ib](t)
    },
    removePathSegment: function (t) {
      if (!this[Oa]) return !1;
      WN(t) && (t = this[Oa][Tt](t)), t && (this[Oa].remove(t), this[tb](t))
    },
    movePathSegment: function (i, n, t) {
      if (!this[Oa]) return !1;
      if (i = i || 0, n = n || 0, wF[yf](t)) {
        var e = this._o91[Tt](t);
        return !!e && (e.move(i, n), void this[tb]())
      }
      aN(function (t) {
        t[Js](i, n)
      }), this[tb]()
    },
    move: function (i, n) {
      if (!this[Oa]) return !1;
      this[Oa].forEach(function (t) {
        t[Js](i, n)
      }, this), this[tb]()
    },
    validateEdgeBundle: function () {}
  }, dN(xY, bY), qN(xY.prototype, {
    pathSegments: {
      get: function () {
        return this[Oa]
      },
      set: function (t) {
        wF.isArray(t) && (t = new hB(t)), this[Oa] = t, this[tb]()
      }
    },
    from: {
      get: function () {
        return this[Xv]
      },
      set: function (t) {
        if (this.$from != t) {
          var i = new MB(this, Fd, t, this[Xv]);
          !1 !== this.beforeEvent(i) && (this.disconnect(), this[Xv] = t, this.connect(), this[O](i))
        }
      }
    },
    to: {
      get: function () {
        return this.$to
      },
      set: function (t) {
        if (this.$to != t) {
          var i = new MB(this, nb, t, this.$to);
          !1 !== this[Ui](i) && (this[eb](), this.$to = t, this.connect(), this[O](i))
        }
      }
    },
    fromAgent: {
      get: function () {
        return this[Xv] ? this[Xv]._eS || this.$from : null
      }
    },
    toAgent: {
      get: function () {
        return this.$to ? this.$to._eS || this.$to : null
      }
    }
  }), pN(xY.prototype, [sb, {
    name: Jv,
    value: !0
  }, ef]);
  var wY = function (t, i, n) {
    2 == arguments[N] && WN(t) && (n = i, i = t, t = null), this.id = ++TN, this._d0 = {}, this._kD = {}, t && (this[Lv] = t), this[hb] = rb, this.$anchorPosition = EB.CENTER_MIDDLE, this[ab] = {
      x: i || 0,
      y: n || 0
    }, this[Mv] = {}
  };

  function OY(t, i) {
    i[Mt](function (t) {
      var i = t[Wd],
        n = t[gv],
        e = (t = t[ob])[Xv]._eS,
        s = t.$to._eS;
      i != n && (i && _Y(i, t, n || t.$to), n && dY(n, t, i || t[Xv])), e != s && (e && uY(e, t, s || t.$to), s && lY(s, t, e || t.$from), fY(e || t.$from, t, s || t.$to))
    }, t)
  }
  wY[_] = {
    $uiClass: sW,
    _eS: null,
    forEachEdge: function (t, i, n) {
      return !(!n && this._lP && !1 === this._lP.forEach(t, i)) && !1 !== mY(this, e = t, s = i) && TY(this, e, s);
      var e, s
    },
    forEachOutEdge: function (t, i) {
      return TY(this, t, i)
    },
    forEachInEdge: function (t, i, n) {
      return mY(this, t, i)
    },
    getEdges: function () {
      var i = [];
      return this[xv](function (t) {
        i.push(t)
      }), i
    },
    _j7: null,
    _gP: null,
    _kB: null,
    _j9: null,
    _oAC: 0,
    _9O: 0,
    hasInEdge: function () {
      return null != this._j7
    },
    hasOutEdge: function () {
      return null != this._gP
    },
    hasEdge: function () {
      return null != this._j7 || null != this._gP || this[fb]()
    },
    linkedWith: function (t) {
      return t[Fd] == this || t.to == this || t[Wd] == this || t[gv] == this
    },
    hasEdgeWith: function (t) {
      var i = this[Vd](t);
      return i && 0 < i[Kv].length
    },
    _lP: null,
    _4C: null,
    hasLoops: function () {
      return this._lP && 0 < this._lP[N]
    },
    _jA: function (t) {
      return this._lP || (this._lP = new hB, this._4C = new xU(this, this, this._lP)), this._4C._jZ(t)
    },
    _oBU: function (t) {
      if (this._4C) return this._4C._e5(t)
    },
    getEdgeBundle: function (t) {
      return t == this ? this._4C : this[Mv][t.id] || t[Mv][this.id]
    },
    _71: function () {
      return this._9Q && this._9Q[N]
    },
    _5Q: function () {
      return this._8M && this._8M[N]
    },
    _9P: function () {
      return this._71() || this._5Q()
    },
    _8M: null,
    _9Q: null,
    _oBW: function () {
      var t, i = this._eS,
        n = (t = this)[Pi] ? (t = t[Pi])._eS ? t._eS : t instanceof PY && !1 === t._iF ? t : null : null;
      if (i != n) {
        var e = pY(this);
        this._9T(n), OY(this, e)
      }
    },
    onParentChanged: function (t, i) {
      wF.doSuper(this, wY, cb, arguments), this[ub]()
    },
    _8N: null,
    _13: function () {
      var t;
      if (this._4E ? t = null : (t = this._eS) || !1 !== this._iF || (t = this), this._8N == t) return !1;
      if (this._8N = t, this._gY && this._gY._kE[N])
        for (var i, n = this._gY._kE, e = 0, s = n[N]; e < s; e++)(i = n[e]) instanceof wY && i._9T(t)
    },
    setLocation: function (t, i) {
      if (this.$location && this[ab].x == t && this[ab].y == i) return !1;
      var n;
      n = this[ab] ? {
        x: this[ab].x,
        y: this.$location.y
      } : this[ab];
      var e = new MB(this, Z_, n, {
        x: t,
        y: i
      });
      return !1 !== this[Ui](e) && (this[ab] ? (this[ab].x = t, this.$location.y = i) : this[ab] = new fB(t, i), this.onEvent(e), !0)
    },
    _eU: null,
    addFollower: function (t) {
      return null != t && (t[_b] = this)
    },
    removeFollower: function (t) {
      return !(!this._eU || !this._eU[Fn](t)) && (t[_b] = null)
    },
    hasFollowers: function () {
      return this._eU && !this._eU.isEmpty()
    },
    toFollowers: function () {
      return this.hasFollowers() ? this._eU.toDatas() : null
    },
    clearFollowers: function () {
      this[lb]() && (this[db](), aN(this[db](), function (t) {
        t.host = null
      }))
    },
    getFollowerIndex: function (t) {
      return this._eU && this._eU.contains(t) ? this._eU.indexOf(t) : -1
    },
    setFollowerIndex: function (t, i) {
      if (!this._eU || !this._eU[Fn](t)) return -1;
      this._eU[An](t, i)
    },
    getFollowerCount: function () {
      return this._eU ? this._eU[N] : 0
    },
    _9R: function () {
      return this._eU || (this._eU = new hB), this._eU
    },
    isFollow: function (t) {
      if (!t || !this[vb]) return !1;
      for (var i = this._host; i;) {
        if (i == t) return !0;
        i = i._host
      }
      return !1
    },
    _9T: function (t) {
      if (t == this._eS) return !1;
      this._eS = t, this[qd](), this._13()
    },
    type: bb
  }, dN(wY, bY), qN(wY.prototype, {
    loops: {
      get: function () {
        return this._lP
      }
    },
    edgeCount: {
      get: function () {
        return this._oAC + this._9O
      }
    },
    agentNode: {
      get: function () {
        return this._eS || this
      }
    },
    host: {
      set: function (t) {
        if (this == t || t == this[vb]) return !1;
        var i = new MB(this, _b, this[vb], t);
        if (!1 === this[Ui](i)) return !1;
        var n = null,
          e = null,
          s = this[vb];
        return (null == t || (n = new MB(t, yb, null, this), !1 !== t[Ui](n))) && ((null == s || (e = new MB(s, gb, null, this), !1 !== s[Ui](e))) && (null != (this[vb] = t) && t._9R().add(this), null != s && s._9R()[o](this), this[O](i), null != t && t[O](n), null != s && s.onEvent(e), !0))
      },
      get: function () {
        return this[vb]
      }
    }
  }), pN(wY.prototype, [Z_, Pl, Uo, kt, Eb]), qN(wY[_], {
    x: {
      get: function () {
        return this[Z_].x
      },
      set: function (t) {
        t != this[Z_].x && (this.location = new fB(t, this.location.y))
      }
    },
    y: {
      get: function () {
        return this[Z_].y
      },
      set: function (t) {
        t != this[Z_].y && (this.location = new fB(this[Z_].x, t))
      }
    }
  });
  var AY = function (t, i) {
    t instanceof NG && (i = t, t = k), vN(this, AY, [t]), this[Gd] = i || new NG, this[Eb] = null, this[fv] = AW, sB[xb] || (sB[xb] = {}, sB.SHAPENODE_STYLES[WY[pb]] = !1), this.putStyles(sB[xb])
  };
  AY[_] = {
    $uiClass: AW,
    type: Tb,
    moveTo: function (t, i) {
      this.path[Ia](t, i), this[tb]()
    },
    lineTo: function (t, i) {
      this[Gd][ja](t, i), this[tb]()
    },
    quadTo: function (t, i, n, e) {
      this[Gd][mb](t, i, n, e), this.firePathChange()
    },
    curveTo: function (t, i, n, e, s, h) {
      this[Gd][wb](t, i, n, e, s, h), this[tb]()
    },
    arcTo: function (t, i, n, e, s) {
      this[Gd].arcTo(t, i, n, e, s), this[tb]()
    },
    closePath: function () {
      this[Gd].closePath(), this[tb]()
    },
    clear: function () {
      this[Gd].clear(), this[tb]()
    },
    removePathSegmentByIndex: function (t) {
      !1 !== this[Gd][ib](t) && this[tb]()
    },
    firePathChange: function () {
      this[Gd]._6W = !0, this[O](new MB(this, qv))
    },
    addPathSegment: function (t, i, n) {
      this[Gd].add(new DG(i || kG, t), n), this.firePathChange()
    }
  }, dN(AY, wY), qN(AY[_], {
    path: {
      get: function () {
        return this[Uo]
      },
      set: function (t) {
        this[Uo] = t
      }
    },
    pathSegments: {
      get: function () {
        return this[Gd][Ob]
      },
      set: function (t) {
        this[Gd][Ob] = t || [], this[tb]()
      }
    },
    length: {
      get: function () {
        return this[Gd][N]
      }
    }
  }), wF[Ab] = AY;
  var IY = {
    _lC: {},
    register: function (t, i) {
      IY._lC[t] = i
    },
    getShape: function (t, i, n, e, s, h) {
      e === k && (e = i, s = n, n = i = 0), e = e || 50, s = s || 50;
      var r = IY._lC[t];
      if (r) return r[Ib] instanceof Function ? r[Ib](i, n, e, s, h) : r
    },
    getRect: function (t, i, n, e, s, h, r) {
      return t instanceof Object && Yt in t && (i = t.y, n = t.width, e = t[Wt], s = t.rx, h = t.ry, r = t[Gd], t = t.x), SY(r || new NG, t, i, n, e, s, h)
    },
    getAllShapes: function (t, i, n, e, s) {
      var h = {};
      for (var r in IY._lC) {
        var a = IY[Sb](r, t, i, n, e, s);
        a && (h[r] = a)
      }
      return h
    },
    createRegularShape: function (t, i, n, e, s) {
      return CY(t, i, n, e, s)
    }
  };

  function SY(t, i, n, e, s, h, r) {
    return h || r ? (h = h || 0, r = r === k ? h : r || 0, h = Math.min(h, e / 2), r = Math.min(r, s / 2), t[Ia](i + h, n), t[ja](i + e - h, n), t.quadTo(i + e, n, i + e, n + r), t[ja](i + e, n + s - r), t.quadTo(i + e, n + s, i + e - h, n + s), t.lineTo(i + h, n + s), t[mb](i, n + s, i, n + s - r), t[ja](i, n + r), t[mb](i, n, i + h, n)) : (t[Ia](i, n), t[ja](i + e, n), t[ja](i + e, n + s), t.lineTo(i, n + s)), t.closePath(), t
  }

  function MY(t, i, n, e, s) {
    i instanceof zF && (e = i.width, s = i[Wt], n = i.cy - s / 2, i = i.cx - e / 2);
    var h = e / 2 * .5522848,
      r = s / 2 * .5522848,
      a = i + e,
      o = n + s,
      f = i + e / 2,
      c = n + s / 2;
    return t.moveTo(i, c), t[wb](i, c - r, f - h, n, f, n), t[wb](f + h, n, a, c - r, a, c), t[wb](a, c + r, f + h, o, f, o), t[wb](f - h, o, i, c + r, i, c), t
  }

  function kY(t, i, n, e, s, h) {
    return t[Ia](i, n), t[ja](i + e, n + s / 2), t[ja](i, n + s), h || (t[ja](i + .25 * e, n + s / 2), t[lc]()), t
  }

  function CY(t, i, n, e, s) {
    if (!t || t < 3) throw new Error("edge number must greater than 2");
    t |= 0, e = e || 50, s = s || 0, i = i || 0, n = n || 0;
    for (var h, r, a = 0, o = 2 * Math.PI / t, f = new NG; a < t;) h = i + e * Math.cos(s), r = n + e * Math.sin(s), a ? f.lineTo(h, r) : f[Ia](h, r), ++a, s += o;
    return f.closePath(), f
  }

  function LY(t, i) {
    vN(this, LY, arguments), this[Mb] = !0
  }

  function RY() {
    vN(this, RY), this._$x = new NB
  }! function () {
    var t, i, n, e, s, h, r, a, o, f, c, u, _, l, d;
    IY[kb](OF.SHAPE_CIRCLE, MY(new NG, 0, 0, 100, 100)), IY.register(OF.SHAPE_RECT, SY(new NG, 0, 0, 100, 100)), IY.register(OF[Cb], SY(new NG, 0, 0, 100, 100, 20, 20)), IY[kb](OF[Lb], (i = 2 * 100, n = 2 * 100, e = 50 + 0, s = 50 + 0, (t = new NG)[Ia](e - i / 4, s - n / 12), t[ja](0 + .306 * 100, 57.9), t[ja](e - i / 6, s + n / 4), t[ja](50, 73.3), t[ja](e + i / 6, s + n / 4), t[ja](69.3, 57.9), t[ja](e + i / 4, s - n / 12), t[ja](61.1, 33.2), t.lineTo(0 + e, s - n / 4), t[ja](0 + .388 * 100, 33.2), t[lc](), t)), IY[kb](OF[Rb], (r = 0, a = 100, (h = new NG)[Ia](0, r), h[ja](100, r + a / 2), h.lineTo(0, r + a), h[lc](), h)), IY[kb](OF.SHAPE_PENTAGON, CY(5)), IY[kb](OF[Pb], CY(6)), IY[kb](OF[Db], (f = 0, c = 100, (o = new NG).moveTo(0, f + c / 2), o[ja](50, f), o[ja](100, f + c / 2), o.lineTo(50, f + c), o[lc](), o)), IY[kb](OF[Nb], ((u = new NG)[Ia](75, 40), u[wb](75, 37, 70, 25, 50, 25), u[wb](20, 25, 20, 62.5, 20, 62.5), u.curveTo(20, 80, 40, 102, 75, 120), u[wb](110, 102, 130, 80, 130, 62.5), u[wb](130, 62.5, 130, 25, 100, 25), u[wb](85, 25, 75, 37, 75, 40), u)), IY[kb](OF[Bb], ((_ = new NG)[Ia](20, 0), _[ja](80, 0), _.lineTo(100, 100), _[ja](0, 100), _[lc](), _)), IY[kb](OF[Fb], ((l = new NG)[Ia](100, 0), l[ja](100, 80), l.lineTo(0, 100), l[ja](0, 20), l.closePath(), l)), IY[kb](OF[Gb], ((d = new NG)[Ia](20, 0), d[ja](100, 0), d.lineTo(80, 100), d.lineTo(0, 100), d.closePath(), d));
    var v, b, y, g, E, x, p, T, m = new NG;
    m.moveTo(20, 0), m.lineTo(40, 0), m.lineTo(40, 20), m.lineTo(60, 20), m.lineTo(60, 40), m[ja](40, 40), m.lineTo(40, 60), m.lineTo(20, 60), m[ja](20, 40), m.lineTo(0, 40), m.lineTo(0, 20), m[ja](20, 20), m[lc](), IY[kb](OF[$b], m), IY[kb](OF[Yb], kY(new NG, 0, 0, 100, 100)), IY[kb](OF.SHAPE_ARROW_1, ((v = new NG)[Ia](43, 23), v[ja](28, 10), v.lineTo(37, 2), v[ja](63, 31), v[ja](37, 59), v[ja](28, 52), v[ja](44, 38), v[ja](3, 38), v[ja](3, 23), v[lc](), v)), IY[kb](OF[Wb], ((b = new NG).moveTo(1, 8), b[ja](7, 2), b[ja](32, 26), b[ja](7, 50), b[ja](1, 44), b.lineTo(18, 26), b[lc](), b.moveTo(27, 8), b.lineTo(33, 2), b.lineTo(57, 26), b[ja](33, 50), b[ja](27, 44), b[ja](44, 26), b[lc](), b)), IY.register(OF[Ub], ((y = new NG).moveTo(0, 15), y[ja](23, 15), y[ja](23, 1), y.lineTo(47, 23), y[ja](23, 43), y[ja](23, 29), y.lineTo(0, 29), y[lc](), y)), IY[kb](OF[Hb], ((g = new NG).moveTo(0, 21), g[ja](30, 21), g[ja](19, 0), g[ja](25, 0), g.lineTo(47, 25), g.lineTo(25, 48), g[ja](19, 48), g[ja](30, 28), g.lineTo(0, 28), g[lc](), g)), IY.register(OF[Vb], ((E = new NG)[Ia](0, 0), E[ja](34, 24), E[ja](0, 48), E.lineTo(14, 24), E.closePath(), E)), IY.register(OF.SHAPE_ARROW_6, ((x = new NG)[Ia](20, 0), x[ja](34, 14), x.lineTo(20, 28), x[ja](22, 18), x[ja](1, 25), x.lineTo(10, 14), x[ja](1, 3), x[ja](22, 10), x[lc](), x)), IY[kb](OF[jb], ((p = new NG).moveTo(4, 18), p[ja](45, 18), p[ja](37, 4), p.lineTo(83, 25), p.lineTo(37, 46), p[ja](45, 32), p.lineTo(4, 32), p.closePath(), p)), IY.register(OF.SHAPE_ARROW_8, ((T = new NG)[Ia](17, 11), T.lineTo(27, 11), T.lineTo(42, 27), T[ja](27, 42), T[ja](17, 42), T[ja](28, 30), T[ja](4, 30), T[ja](4, 23), T.lineTo(28, 23), T[lc](), T)), IY[kb](OF[Xb], kY(new NG, 0, 0, 100, 100, !0))
  }(), LY[_] = {
    type: Zb
  }, dN(LY, AY), wF.Bus = LY, RY[_] = {
    _gQ: function (t) {
      var i, n = t._kK,
        e = (i = n ? n._gY : this[On])[b](t);
      if (e < 0) throw new Error(Ln + t + "' not exist in the box");
      for (; 0 <= e;) {
        if (0 == e) return n instanceof wY ? n : null;
        --e;
        var s = i[Tt](e);
        if (s = nN(s)) return s
      }
      return null
    },
    forEachNode: function (i, n) {
      this[Mt](function (t) {
        if (t instanceof wY && !1 === i[p](n, t)) return !1
      })
    },
    _3L: null
  }, dN(RY, $B), qN(RY.prototype, {
    propertyChangeDispatcher: {
      get: function () {
        return this._$x
      }
    },
    currentSubNetwork: {
      get: function () {
        return this._3L
      },
      set: function (t) {
        if (t && !t.enableSubNetwork && (t = null), this._3L != t) {
          var i = this._3L;
          this._3L = t, this._$x[O](new MB(this, zb, t, i))
        }
      }
    }
  }), sB[Kb] = OF[Jb], sB.GROUP_PADDING = 5, sB.GROUP_EXPANDED = !0, sB[Qb] = {
    width: 60,
    height: 60
  };
  var PY = function (t, i, n) {
    vN(this, PY, arguments), i !== k && n !== k || (this[ab][qb] = !0), this.$groupType = sB.GROUP_TYPE, this.$padding = sB.GROUP_PADDING, this[hb] = jG[ty], this[iy] = sB.GROUP_MIN_SIZE, this[cv] = sB.GROUP_EXPANDED
  };

  function DY(t, i, n) {
    vN(this, DY, arguments), this[hb] = null
  }
  PY[_] = {
    type: ny,
    $uiClass: EW,
    _o9R: function () {
      return !this._iF && !this._eS
    },
    forEachOutEdge: function (t, i, n) {
      return !1 !== TY(this, t, i) && (!n && this[ey]() && this._8M ? this._8M.forEach(t, i) : void 0)
    },
    forEachInEdge: function (t, i, n) {
      return !1 !== mY(this, t, i) && (!n && this._o9R() && this._9Q ? this._9Q.forEach(t, i) : void 0)
    },
    forEachEdge: function (t, i, n) {
      return !1 !== bN(this, PY, xv, arguments) && (n || n || !this[ey]() ? void 0 : (!this._9Q || !1 !== this._9Q[Mt](t, i)) && (this._8M ? this._8M[Mt](t, i) : void 0))
    },
    hasInEdge: function (t) {
      return t ? null != this._j7 : null != this._j7 || this._71()
    },
    hasOutEdge: function (t) {
      return t ? null != this._gP : null != this._gP || this._5Q()
    },
    hasEdge: function (t) {
      return t ? null != this._j7 || null != this._gP : null != this._j7 || null != this._gP || this._9P()
    }
  }, dN(PY, wY), qN(PY[_], {
    expanded: {
      get: function () {
        return this._iF
      },
      set: function (t) {
        if (this._iF != t) {
          var i = new MB(this, cv, t, this._iF);
          !1 !== this[Ui](i) && (this._iF = t, this._13(), this[O](i), this._eS || function () {
            if (!0 !== this._iF) pY(this)[Mt](function (t) {
              var i = (t = t.edge)[Xv],
                n = t.$to,
                e = i[Pv](this),
                s = n[Pv](this);
              e && !s ? (uY(this, t), fY(this, t)) : s && !e && (lY(this, t), fY(t[Wd], t, this))
            }, this);
            else {
              var t = this._8M,
                i = this._9Q;
              if (t)
                for (t = t._kE; t.length;) _Y(this, n = t[0], n.toAgent);
              if (i)
                for (i = i._kE; i[N];) {
                  var n;
                  dY(this, n = i[0], n[Wd])
                }
              OY(this, pY(this))
            }
          } [p](this))
        }
      }
    }
  }), pN(PY[_], [sy, hy, ry, ay]), wF.Group = PY, DY.prototype.type = oy, dN(DY, wY), wF[fy] = DY;
  var NY = function (t) {
    this._kG = new yB, this._8O = new yB, this._h0 = new yB, this.id = ++TN, t && (this[Ki] = t)
  };

  function BY(t, n, i, e) {
    return t[n] = i, e ? {
      get: function () {
        return this[n]
      },
      set: function (t) {
        if (t !== this[n]) {
          this[n] = t, this._oAH, this._1L = !0;
          for (var i = e[N]; 0 <= --i;) this[e[i]] = !0
        }
      }
    } : {
      get: function () {
        return this[n]
      },
      set: function (t) {
        t !== this[n] && (this[n] = t)
      }
    }
  }

  function FY(t, i) {
    var n = {},
      e = {};
    for (var s in i) {
      var h = i[s];
      h[cy] && h.validateFlags[Mt](function (t, i, n) {
        n[i] = uy + t, e[t] = !0
      }), n[s] = BY(t, w + s, h[Li], h.validateFlags)
    }
    for (var r in e) t[uy + r] = !0;
    Object.defineProperties(t, n)
  }

  function GY(t) {
    if (t[_y] && t[ly]) {
      var i = t[ly];
      return t.globalDirection && QF(i) ? i + Math.PI : i
    }
  }
  NY.prototype = {
    invalidate: function () {
      this.invalidateData()
    },
    _1L: !0,
    _kG: null,
    _8O: null,
    _h0: null,
    _oAH: !1,
    _kI: 1,
    _kJ: 1,
    _jC: !0,
    _8Q: 0,
    _73: 0,
    _kK: null,
    _oAJ: null,
    borderColor: dy,
    borderLineDash: null,
    borderLineDashOffset: null,
    syncSelection: !0,
    syncSelectionStyles: !0,
    _1A: function () {
      this[vy] = AB(this[Eb], this._8Q, this._73)
    },
    setMeasuredBounds: function (t, i, n, e) {
      if (t instanceof Object && (n = t.x, e = t.y, i = t.height, t = t[Yt]), this._kG.width == t && this._kG[Wt] == i && this._kG.x == n && this._kG.y == e) return !1;
      this._kG.set(n || 0, e || 0, t || 0, i || 0)
    },
    initialize: function () {},
    measure: function () {},
    draw: function (t, i, n, e) {},
    _8R: function (t, i, n) {
      n[Bf] == OF[zr] ? (t[Po] = n.selectionColor, t[Do] = n[Mf] * i, t[No] = (n[kf] || 0) * i, t[Bo] = (n[Cf] || 0) * i) : this._25(t, i, n)
    },
    _25: function (t, i, n) {
      var e = n[Rf] || 0;
      n[by] && (t.fillStyle = n.selectionBackgroundColor, t.fillRect(this._8O.x - e / 2, this._8O.y - e / 2, this._8O.width + e, this._8O[Wt] + e)), t[Da] = n.selectionColor, t[Pa] = e, t.strokeRect(this._8O.x - e / 2, this._8O.y - e / 2, this._8O[Yt] + e, this._8O[Wt] + e)
    },
    _kL: function (t, i, n, e) {
      if (!this._jC) return !1;
      this[yy] || (n = this.selected), (!n || this[gy]) && e || (e = this), t[Ga](), 1 != this[Ey] && (t.globalAlpha = this.$alpha), t[Ya](this.$x, this.$y);
      var s = GY(this);
      if (s && t[kt](s), (this.offsetX || this[xy]) && t[Ya](this[py], this[xy]), this[lu] && t[kt](this.$rotate), this.$layoutByAnchorPoint && this[_u] && t[Ya](-this._oAJ.x, -this._oAJ.y), this.shadowColor && (t[Po] = this[Po], t.shadowBlur = this[Do] * i, t[No] = this[No] * i, t[Bo] = this[Bo] * i), n && e[Bf] == OF[Ty] && (this._25(t, i, e), n = !1), this._$u() && this[Iu] && !this[Iu][my]) {
        this[Iu][ro]();
        var h = {
          lineWidth: this.$border,
          strokeStyle: this.borderColor,
          lineDash: this[wy],
          lineDashOffset: this[Oy],
          fillColor: this[Ay],
          fillGradient: this[Lu],
          lineCap: Br,
          lineJoin: or
        };
        this[Iu].draw(t, i, h, n, e), n = !1, t.shadowColor = Gf
      }
      t[Ua](), this.draw(t, i, n, e), t.restore()
    },
    invalidateData: function () {
      this[Iy] = !0, this[bu] = !0, this._1L = !0
    },
    invalidateSize: function () {
      this[bu] = !0, this._1L = !0
    },
    invalidateRender: function () {
      this._1L = !0
    },
    _5V: function () {},
    _$u: function () {
      return this[Ay] || this[Sy] || this[gu]
    },
    _4G: function () {
      return this[Ay] || this[Sy]
    },
    doValidate: function () {
      return this[Iy] && (this[Iy] = !1) !== this.measure() && (this[bu] = !0), this[bu] && this[My] && this.validateSize(), KG.call(this) ? (this.$invalidateRotate = !0, this[ky] && this[ky](), !0) : this[Cy] ? (this[Ly] = !0, !(this[Cy] = !1)) : void 0
    },
    validate: function () {
      var t = this._jC;
      return this[Ry] && (this[Ry] = !1, this._jC = this[Py], !this._jC || (this.$data || this.$showEmpty) && !1 !== this._5V() || (this._jC = !1)), this._jC ? (this._1L = !1, this._oAH || (this[Dy](), this._oAH = !0), this[Ny]()) : t != this._jC
    },
    _jD: function (t, i) {
      return t -= this.$x, i -= this.$y, zG[p](this, {
        x: t,
        y: i
      })
    },
    hitTest: function (t, i, n, e) {
      if (t -= this.$x, i -= this.$y, !this._h0.intersectsPoint(t, i, n)) return !1;
      var s = zG[p](this, {
        x: t,
        y: i
      });
      return t = s.x, i = s.y, !(e || !this._$u() || !this[Iu] || !this._nJShape[Wo](t, i, n, !1, this[gu], this.$backgroundColor || this[Sy])) || this[By](t, i, n)
    },
    doHitTest: function (t, i, n) {
      return this._kG[Zt](t, i, n)
    },
    hitTestByBounds: function (t, i, n, e) {
      var s = this._jD(t, i);
      return !(e || !this._$u() || !this[Iu] || !this._nJShape.hitTest(t, i, n, !1, this[gu], this[Ay] || this[Sy])) || this._kG[Zt](s.x, s.y, n)
    },
    onDataChanged: function (t, i) {
      this[Iy] = !0, this._1L = !0, this[Ry] = !0
    },
    getBounds: function () {
      var t = this._h0[l]();
      return t.offset(this.x, this.y), this[Pi] && (this[Pi][kt] && MF(t, this[Pi][kt], t), t[Fy](this[Pi].x || 0, this.parent.y || 0)), t
    },
    destroy: function () {
      this[Xu] = !0
    },
    _eX: !1
  }, qN(NY[_], {
    originalBounds: {
      get: function () {
        return this._kG
      }
    },
    data: {
      get: function () {
        return this[Nu]
      },
      set: function (t) {
        if (this.$data != t) {
          var i = this[Nu];
          this[Nu] = t, this[Gy](t, i)
        }
      }
    },
    parent: {
      get: function () {
        return this._kK
      }
    },
    showOnTop: {
      get: function () {
        return this._eX
      },
      set: function (t) {
        t != this._eX && (this._eX = t, this._1L = !0, this._kK && this._kK._oAG && this._kK._oAG(this))
      }
    }
  }), FY(NY[_], {
    globalDirection: {
      value: !1,
      validateFlags: [$y]
    },
    visible: {
      value: !0,
      validateFlags: [Yy, $y]
    },
    showEmpty: {
      validateFlags: [Yy]
    },
    anchorPosition: {
      value: EB[ui],
      validateFlags: [Wy, $y]
    },
    position: {
      value: EB[ui],
      validateFlags: [$y]
    },
    offsetX: {
      value: 0,
      validateFlags: [$y]
    },
    offsetY: {
      value: 0,
      validateFlags: [$y]
    },
    layoutByAnchorPoint: {
      value: !0,
      validateFlags: [xh, Wy, $y]
    },
    padding: {
      value: 0,
      validateFlags: [xh]
    },
    border: {
      value: 0,
      validateFlags: [xh]
    },
    borderRadius: {
      value: sB[Uy]
    },
    showPointer: {
      value: !1,
      validateFlags: [xh]
    },
    pointerX: {
      value: 0,
      validateFlags: [xh]
    },
    pointerY: {
      value: 0,
      validateFlags: [xh]
    },
    pointerWidth: {
      value: sB[qr]
    },
    backgroundColor: {
      validateFlags: [xh]
    },
    backgroundGradient: {
      validateFlags: [xh, Hy]
    },
    selected: {
      value: !1,
      validateFlags: [xh]
    },
    selectionBorder: {
      value: sB[Jr],
      validateFlags: [xh]
    },
    selectionShadowBlur: {
      value: sB[Vy],
      validateFlags: [xh]
    },
    selectionColor: {
      value: sB[Qr],
      validateFlags: [xh]
    },
    selectionType: {
      value: sB.SELECTION_TYPE,
      validateFlags: [xh]
    },
    selectionShadowOffsetX: {
      value: 0,
      validateFlags: [xh]
    },
    selectionShadowOffsetY: {
      value: 0,
      validateFlags: [xh]
    },
    shadowBlur: {
      value: 0,
      validateFlags: [xh]
    },
    shadowColor: {
      validateFlags: [xh]
    },
    shadowOffsetX: {
      value: 0,
      validateFlags: [xh]
    },
    shadowOffsetY: {
      value: 0,
      validateFlags: [xh]
    },
    renderColorBlendMode: {},
    renderColor: {},
    x: {
      value: 0,
      validateFlags: [$y]
    },
    y: {
      value: 0,
      validateFlags: [$y]
    },
    rotatable: {
      value: !0,
      validateFlags: [jy, xh]
    },
    rotate: {
      value: 0,
      validateFlags: [jy, xh]
    },
    _hostRotate: {
      validateFlags: [jy]
    },
    lineWidth: {
      value: 0,
      validateFlags: [Xy]
    },
    alpha: {
      value: 1
    }
  });
  var $Y = [OF.PROPERTY_TYPE_ACCESSOR, OF[Cv], OF[Zy]];

  function YY() {
    $Y[Mt](function (t) {
      this[t] = {}
    }, this)
  }
  YY[_] = {
    removeBinding: function (i) {
      for (var t = $Y[N]; 0 <= --t;) {
        var n = this[$Y[t]];
        for (var e in n) {
          var s = n[e];
          Array[W](s) ? (oN(s, function (t) {
            return t[hl] == i
          }, this), s[N] || delete n[e]) : s[hl] == i && delete n[e]
        }
      }
    },
    _22: function (t, i, n) {
      if (!n && !(n = this[i[an] || OF[zy]])) return !1;
      var e = n[t];
      e ? (Array.isArray(e) || (n[t] = e = [e]), e[M](i)) : n[t] = i
    },
    _2T: function (t, i, n, e, s, h) {
      var r = this[t = t || OF[zy]];
      if (!r) return !1;
      var a = {
        property: i,
        propertyType: t,
        bindingProperty: e,
        target: n,
        callback: s,
        invalidateSize: h
      };
      this._22(i, a, r)
    },
    onBindingPropertyChange: function (t, i, n, e) {
      var s = this[n || OF.PROPERTY_TYPE_ACCESSOR];
      if (!s) return !1;
      var h = s[i];
      return !!h && (t._1L = !0, function t(i, n, e, s) {
        if (Array[W](n))
          for (var h = n[N]; 0 <= --h;) t(i, n[h], e, s);
        else {
          var r = n[hl];
          if (r) {
            if (r instanceof NY || (r = i[r]), !r) return
          } else r = i;
          if (s = s || i[Ky](n.property, e), n[Jy] && (r[n.bindingProperty] = s), n[Qy]) {
            var a = n.callback;
            a instanceof Function || (a = i[a]), a instanceof Function && a[p](i, s, r)
          }
        }
      }(t, h, n, e), !0)
    },
    initBindingProperties: function (t, i) {
      for (var n = $Y.length; 0 <= --n;) {
        var e = $Y[n],
          s = this[e];
        for (var h in s) {
          var r = s[h];
          if (r[Jy]) {
            var a, o = r.target;
            if (o) {
              if (!(o instanceof NY || (o = t[o]))) continue
            } else o = t;
            (a = !1 === i ? t[Ky](r.property, e) : e == OF[Cv] ? t[qy].getStyle(t.$data, r[tg]) : t.$data[r.property]) !== k && (o[r[Jy]] = a)
          }
        }
      }
    }
  };
  var WY = {
    SELECTION_COLOR: ig,
    SELECTION_BORDER: ng,
    SELECTION_SHADOW_BLUR: "selection.shadow.blur",
    SELECTION_SHADOW_OFFSET_X: "selection.shadow.offset.x",
    SELECTION_SHADOW_OFFSET_Y: "selection.shadow.offset.y",
    SELECTION_TYPE: eg,
    RENDER_COLOR: sg,
    RENDER_COLOR_BLEND_MODE: "render.color.blend.mode",
    ALPHA: hg,
    SHADOW_BLUR: rg,
    SHADOW_COLOR: ag,
    SHADOW_OFFSET_X: og,
    SHADOW_OFFSET_Y: fg,
    SHAPE_STROKE: cg,
    SHAPE_STROKE_STYLE: ug,
    SHAPE_LINE_FILL_COLOR: "shape.stroke.fill.color",
    SHAPE_LINE_DASH: _g,
    SHAPE_LINE_DASH_OFFSET: "shape.line.dash.offset",
    SHAPE_FILL_COLOR: lg,
    SHAPE_FILL_GRADIENT: dg,
    SHAPE_OUTLINE: vg,
    SHAPE_OUTLINE_STYLE: bg,
    LAYOUT_BY_PATH: yg,
    BACKGROUND_COLOR: gg,
    BACKGROUND_GRADIENT: Eg,
    BORDER: xg,
    BORDER_COLOR: pg,
    BORDER_LINE_DASH: Tg,
    BORDER_LINE_DASH_OFFSET: "border.line.dash.offset",
    BORDER_RADIUS: mg,
    PADDING: ry,
    LINE_CAP: wg,
    LINE_JOIN: Og,
    LINE_DASH_CAP: Ag,
    LINE_DASH_JOIN: Ig,
    IMAGE_BACKGROUND_COLOR: "image.background.color",
    IMAGE_BACKGROUND_GRADIENT: "image.background.gradient",
    IMAGE_BORDER: Sg
  };
  WY[Mg] = WY[kg] = Cg, WY[Lg] = "image.border.line.dash", WY[Rg] = "image.border.line.dash.offset", WY[Pg] = WY[Dg] = Ng, WY.IMAGE_PADDING = Bg, WY.IMAGE_Z_INDEX = Fg, WY.IMAGE_ADJUST = Gg, WY.IMAGE_ALPHA = $g, WY[Yg] = Wg, WY[Ug] = Hg, WY.LABEL_GLOBAL_DIRECTION = "label.global.direction", WY[Vg] = jg, WY.LABEL_ANCHOR_POSITION = "label.anchor.position", WY.LABEL_COLOR = Xg, WY[Zg] = zg, WY[Kg] = Jg, WY[Qg] = qg, WY[tE] = iE, WY[nE] = eE, WY[sE] = hE, WY.LABEL_RADIUS = rE, WY[aE] = oE, WY[fE] = cE, WY[uE] = _E, WY[lE] = dE, WY.LABEL_BORDER = vE, WY[bE] = "label.border.line.dash", WY[yE] = "label.border.line.dash.offset", WY[gE] = EE, WY[xE] = "label.background.color", WY[pE] = "label.background.gradient", WY[TE] = mE, WY.LABEL_SHADOW_BLUR = wE, WY[OE] = AE, WY[IE] = "label.shadow.offset.x", WY[SE] = "label.shadow.offset.y", WY[ME] = kE, WY[CE] = LE, WY.GROUP_BACKGROUND_COLOR = "group.background.color", WY[RE] = "group.background.gradient", WY.GROUP_RADIUS = PE, WY[DE] = NE, WY[BE] = FE, WY[GE] = "group.stroke.line.dash", WY.GROUP_STROKE_LINE_DASH_OFFSET = "group.stroke.line.dash.offset", WY.EDGE_BUNDLE_LABEL_ROTATE = "edge.bundle.label.rotate", WY.EDGE_BUNDLE_LABEL_POSITION = "edge.bundle.label.position", WY[$E] = "edge.bundle.label.anchor.position", WY[YE] = "edge.bundle.label.color", WY[WE] = "edge.bundle.label.font.size", WY.EDGE_BUNDLE_LABEL_FONT_FAMILY = "edge.bundle.label.font.family", WY[UE] = "edge.bundle.label.font.style", WY.EDGE_BUNDLE_LABEL_PADDING = "edge.bundle.label.padding", WY[HE] = "edge.bundle.label.pointer.width", WY.EDGE_BUNDLE_LABEL_POINTER = "edge.bundle.label.pointer", WY[VE] = "edge.bundle.label.radius", WY[jE] = "edge.bundle.label.offset.x", WY[XE] = "edge.bundle.label.offset.y", WY[ZE] = "edge.bundle.label.border", WY[zE] = "edge.bundle.label.border.color", WY.EDGE_BUNDLE_LABEL_BACKGROUND_COLOR = "edge.bundle.label.background.color", WY[KE] = "edge.bundle.label.background.gradient", WY.EDGE_BUNDLE_LABEL_ROTATABLE = "edge.bundle.label.rotatable", WY[JE] = QE, WY[qE] = tx, WY.EDGE_OUTLINE = ix, WY[nx] = ex, WY.EDGE_LINE_DASH = sx, WY.EDGE_LINE_DASH_OFFSET = "edge.line.dash.offset", WY[hx] = rx, WY.EDGE_TO_OFFSET = ax, WY.EDGE_FILL_COLOR = ox, WY[fx] = cx, WY[ux] = _x, WY[lx] = dx, WY[vx] = bx, WY[yx] = gx, WY[Ex] = "edge.split.by.percent", WY[xx] = px, WY[Tx] = mx, WY[wx] = Ox, WY[Ax] = Ix, WY[Sx] = Mx, WY[kx] = Cx, WY.EDGE_FROM_PORT = Lx, WY.EDGE_TO_PORT = Rx, WY[Px] = Dx, WY.ARROW_FROM_SIZE = Nx, WY.ARROW_FROM_OFFSET = Bx, WY.ARROW_FROM_STROKE = Fx, WY[Gx] = "arrow.from.stroke.style", WY[$x] = Yx, WY[Wx] = "arrow.from.outline.style", WY[Ux] = Hx, WY.ARROW_FROM_LINE_DASH_OFFSET = "arrow.from.line.dash.offset", WY[Vx] = "arrow.from.fill.color", WY.ARROW_FROM_FILL_GRADIENT = "arrow.from.fill.gradient", WY[jx] = Xx, WY.ARROW_FROM_LINE_JOIN = Zx, WY[pb] = zx, WY[Kx] = Jx, WY[Qx] = qx, WY.ARROW_TO_STROKE = tp, WY[ip] = "arrow.to.stroke.style", WY.ARROW_TO_OUTLINE = np, WY[ep] = "arrow.to.outline.style", WY[sp] = hp, WY[rp] = "arrow.to.line.dash.offset", WY[ap] = op, WY[fp] = "arrow.to.fill.gradient", WY[cp] = up, WY.ARROW_TO_LINE_JOIN = _p;
  var UY = new YY,
    HY = OF[zy],
    VY = OF[Cv];
  UY._2T(VY, WY[Zr], null, Bf), UY._2T(VY, WY.SELECTION_BORDER, null, Rf), UY._2T(VY, WY[Vy], null, Mf), UY._2T(VY, WY.SELECTION_COLOR, null, Sf), UY._2T(VY, WY[lp], null, "selectionShadowOffsetX"), UY._2T(VY, WY.SELECTION_SHADOW_OFFSET_Y, null, "selectionShadowOffsetY"), UY._2T(HY, P_, t_, Ki), UY._2T(VY, WY[Vg], t_, rd), UY._2T(VY, WY[Ug], t_, Pu), UY._2T(VY, WY[dp], t_, vp), UY._2T(VY, WY.LABEL_ANCHOR_POSITION, t_, Eb), UY._2T(VY, WY.LABEL_COLOR, t_, bp), UY._2T(VY, WY.LABEL_FONT_SIZE, t_, yp), UY._2T(VY, WY[gp], t_, jh), UY._2T(VY, WY.LABEL_BORDER_LINE_DASH, t_, wy), UY._2T(VY, WY[yE], t_, Oy), UY._2T(VY, WY.LABEL_BORDER_STYLE, t_, Ep), UY._2T(VY, WY.LABEL_BACKGROUND_COLOR, t_, xp), UY._2T(VY, WY[CE], t_, pp), UY._2T(VY, WY.SHADOW_BLUR, null, Do), UY._2T(VY, WY.SHADOW_COLOR, null, Po), UY._2T(VY, WY[Tp], null, No), UY._2T(VY, WY[mp], null, Bo), UY._2T(VY, WY[Kg], t_, wp), UY._2T(VY, WY[Qg], t_, Op), UY._2T(VY, WY[lE], t_, Ap), UY._2T(VY, WY[Yg], t_, kt), UY._2T(VY, WY[tE], t_, ry), UY._2T(VY, WY.LABEL_POINTER_WIDTH, t_, Ip), UY._2T(VY, WY[sE], t_, Sp), UY._2T(VY, WY.LABEL_RADIUS, t_, Mp), UY._2T(VY, WY[aE], t_, py), UY._2T(VY, WY[fE], t_, xy), UY._2T(VY, WY[TE], t_, kp), UY._2T(VY, WY.LABEL_BACKGROUND_GRADIENT, t_, Cu), UY._2T(VY, WY[uE], t_, Pl), UY._2T(VY, WY[Cp], t_, Do), UY._2T(VY, WY[OE], t_, Po), UY._2T(VY, WY[IE], t_, No), UY._2T(VY, WY[SE], t_, Bo), UY._2T(VY, WY.LABEL_Z_INDEX, t_, zl), UY._2T(VY, WY.RENDER_COLOR, null, to), UY._2T(VY, WY.RENDER_COLOR_BLEND_MODE, null, Fo), UY._2T(VY, WY[Lp], null, hg);
  var jY = new YY;
  jY._2T(HY, Z_), jY._2T(HY, Eb, null, Rp), jY._2T(HY, kt, null, kt), jY._2T(VY, WY[Pp], null, xp), jY._2T(VY, WY[Dp], null, Cu), jY._2T(VY, WY[Np], null, ry), jY._2T(VY, WY[Bp], null, jh), jY._2T(VY, WY[Uy], null, Mp), jY._2T(VY, WY[Fp], null, Ep), jY._2T(VY, WY[Gp], null, wy), jY._2T(VY, WY.BORDER_LINE_DASH_OFFSET, null, Oy), jY._2T(HY, Uo, Uo, Ki, $p), jY._2T(HY, Pl, Uo, Pl), jY._2T(VY, WY.SHAPE_STROKE, Uo, Pa), jY._2T(VY, WY[Yp], Uo, Da), jY._2T(VY, WY[Wp], Uo, $f), jY._2T(VY, WY.LAYOUT_BY_PATH, Uo, Du), jY._2T(VY, WY[Up], Uo, Hp), jY._2T(VY, WY[Vp], Uo, Pf), jY._2T(VY, WY[jp], Uo, Ff), jY._2T(VY, WY[Xp], Uo, Yf), jY._2T(VY, WY[Zp], Uo, jf), jY._2T(VY, WY[zp], Uo, Xf), jY._2T(VY, WY[Kp], Uo, Df), jY._2T(VY, WY[Jp], Uo, Nf), jY._2T(VY, WY[Qp], Uo, xp), jY._2T(VY, WY.IMAGE_BACKGROUND_GRADIENT, Uo, Cu), jY._2T(VY, WY[qp], Uo, ry), jY._2T(VY, WY.IMAGE_BORDER, Uo, jh), jY._2T(VY, WY[Dg], Uo, Mp), jY._2T(VY, WY[kg], Uo, Ep), jY._2T(VY, WY.IMAGE_BORDER_LINE_DASH, Uo, wy), jY._2T(VY, WY.IMAGE_BORDER_LINE_DASH_OFFSET, Uo, Oy), jY._2T(VY, WY.IMAGE_Z_INDEX, Uo, zl), jY._2T(VY, WY[tT], Uo, hg), jY._2T(HY, cv, null, null, iT), jY._2T(HY, ov, null, null, iT);
  var XY = new YY;
  XY._2T(HY, hy, null, null, nT), XY._2T(HY, ay, null, null, nT), XY._2T(HY, sy, null, null, nT), XY._2T(HY, ry, null, null, nT), XY._2T(VY, WY[eT], sT, $f), XY._2T(VY, WY.GROUP_BACKGROUND_GRADIENT, sT, Yf), XY._2T(VY, WY[DE], sT, Pa), XY._2T(VY, WY.GROUP_STROKE_STYLE, sT, Da), XY._2T(VY, WY[GE], sT, jf), XY._2T(VY, WY[hT], sT, Xf), XY._2T(VY, WY[rT], null, null, nT);
  var ZY = new YY;
  ZY._2T(HY, Fd, sT, null, aT), ZY._2T(HY, nb, sT, null, aT), ZY._2T(HY, sb, sT, null, aT), ZY._2T(VY, WY[vx], sT, null, aT), ZY._2T(VY, WY[fx], sT, null, aT), ZY._2T(VY, WY[JE], sT, Pa), ZY._2T(VY, WY[qE], sT, Da), ZY._2T(VY, WY.ARROW_FROM, sT, oT), ZY._2T(VY, WY[pb], sT, fT), ZY._2T(VY, WY[cT], sT, Hf), ZY._2T(VY, WY.LINE_DASH_JOIN, sT, Vf), ZY._2T(VY, WY.EDGE_FILL_COLOR, sT, Uf), ZY._2T(VY, WY.EDGE_FROM_AT_EDGE, null, uT, aT), ZY._2T(VY, WY.EDGE_TO_AT_EDGE, null, _T, aT), ZY._2T(VY, WY[lT], sT, Pf), ZY._2T(VY, WY[nx], sT, Ff), ZY._2T(VY, WY[dT], sT, jf), ZY._2T(VY, WY[vT], sT, Xf), ZY._2T(VY, WY[yx], sT, null, aT), ZY._2T(VY, WY[hx], sT, null, aT), ZY._2T(VY, WY[bT], sT, null, aT), ZY._2T(VY, WY[yT], sT, null, aT), ZY._2T(VY, WY.EDGE_TO_PORT, sT, null, aT), ZY._2T(VY, WY[Kp], sT, Df), ZY._2T(VY, WY.LINE_JOIN, sT, Nf), ZY._2T(HY, qv, null, null, aT, !0), ZY._2T(HY, ef, null, null, aT, !0), ZY._2T(VY, WY[gT], sT, ET), ZY._2T(VY, WY[xT], sT, pT), ZY._2T(VY, WY[TT], sT, mT), ZY._2T(VY, WY[Gx], sT, wT), ZY._2T(VY, WY.ARROW_FROM_OUTLINE, sT, OT), ZY._2T(VY, WY.ARROW_FROM_OUTLINE_STYLE, sT, "fromArrowOutlineStyle"), ZY._2T(VY, WY[Vx], sT, AT), ZY._2T(VY, WY[IT], sT, "fromArrowFillGradient"), ZY._2T(VY, WY[Ux], sT, ST), ZY._2T(VY, WY.ARROW_FROM_LINE_DASH_OFFSET, sT, "fromArrowLineDashOffset"), ZY._2T(VY, WY[MT], sT, kT), ZY._2T(VY, WY[jx], sT, CT), ZY._2T(VY, WY[Kx], sT, LT), ZY._2T(VY, WY.ARROW_TO_OFFSET, sT, RT), ZY._2T(VY, WY.ARROW_TO_STROKE, sT, PT), ZY._2T(VY, WY[ip], sT, DT), ZY._2T(VY, WY[NT], sT, BT), ZY._2T(VY, WY[ep], sT, FT), ZY._2T(VY, WY[ap], sT, GT), ZY._2T(VY, WY[fp], sT, $T), ZY._2T(VY, WY.ARROW_TO_LINE_DASH, sT, YT), ZY._2T(VY, WY[rp], sT, "toArrowLineDashOffset"), ZY._2T(VY, WY.ARROW_TO_LINE_JOIN, sT, WT), ZY._2T(VY, WY[cp], sT, UT);
  var zY = new YY;
  zY._2T(VY, WY.EDGE_BUNDLE_LABEL_COLOR, HT, bp), zY._2T(VY, WY[VT], HT, Pu), zY._2T(VY, WY.EDGE_BUNDLE_LABEL_ANCHOR_POSITION, HT, Eb), zY._2T(VY, WY[WE], HT, yp), zY._2T(VY, WY[jT], HT, kp), zY._2T(VY, WY[XT], HT, kt), zY._2T(VY, WY[ZT], HT, wp), zY._2T(VY, WY[UE], HT, Op), zY._2T(VY, WY[zT], HT, ry), zY._2T(VY, WY[HE], HT, Ip), zY._2T(VY, WY.EDGE_BUNDLE_LABEL_POINTER, HT, Sp), zY._2T(VY, WY[VE], HT, Mp), zY._2T(VY, WY.EDGE_BUNDLE_LABEL_OFFSET_X, HT, py), zY._2T(VY, WY.EDGE_BUNDLE_LABEL_OFFSET_Y, HT, xy), zY._2T(VY, WY.EDGE_BUNDLE_LABEL_BORDER, HT, jh), zY._2T(VY, WY[zE], HT, Ep), zY._2T(VY, WY[KT], HT, xp), zY._2T(VY, WY[KE], HT, Cu);
  var KY = new YY;

  function JY(t, i) {
    return (t = t.zIndex) == (i = i[zl]) ? 0 : (i = i || 0) < (t = t || 0) ? 1 : t < i ? -1 : void 0
  }
  KY._2T(HY, Z_), KY._2T(VY, WY[Pp], null, xp), KY._2T(VY, WY.BACKGROUND_GRADIENT, null, Cu), KY._2T(VY, WY[Np], null, ry), KY._2T(VY, WY[Bp], null, jh), KY._2T(VY, WY[Uy], null, Mp), KY._2T(VY, WY.BORDER_COLOR, null, Ep), KY._2T(VY, WY[Gp], null, wy), KY._2T(VY, WY[JT], null, Oy), KY._2T(HY, kt, null, kt), KY._2T(HY, qv, null, null, QT), KY._2T(HY, Gd, Uo, Ki), KY._2T(HY, Pl, Uo, Pl), KY._2T(VY, WY[qT], Uo, Pa), KY._2T(VY, WY[Yp], Uo, Da), KY._2T(VY, WY[Wp], Uo, $f), KY._2T(VY, WY[Xp], Uo, Yf), KY._2T(VY, WY[cT], Uo, Hf), KY._2T(VY, WY[tm], Uo, Vf), KY._2T(VY, WY[im], Uo, Uf), KY._2T(VY, WY[Vp], Uo, Pf), KY._2T(VY, WY[jp], Uo, Ff), KY._2T(VY, WY[Zp], Uo, jf), KY._2T(VY, WY.SHAPE_LINE_DASH_OFFSET, Uo, Xf), KY._2T(VY, WY[Kp], Uo, Df), KY._2T(VY, WY[Jp], Uo, Nf), KY._2T(VY, WY[nm], Uo, Du), KY._2T(VY, WY.IMAGE_BACKGROUND_COLOR, Uo, xp), KY._2T(VY, WY.IMAGE_BACKGROUND_GRADIENT, Uo, Cu), KY._2T(VY, WY.IMAGE_PADDING, Uo, ry), KY._2T(VY, WY[em], Uo, jh), KY._2T(VY, WY.IMAGE_BORDER_RADIUS, Uo, Mp), KY._2T(VY, WY.IMAGE_BORDER_COLOR, Uo, Ep), KY._2T(VY, WY[Lg], Uo, wy), KY._2T(VY, WY.IMAGE_BORDER_LINE_DASH_OFFSET, Uo, Oy), KY._2T(VY, WY[Px], Uo, oT), KY._2T(VY, WY.ARROW_FROM_SIZE, Uo, ET), KY._2T(VY, WY.ARROW_FROM_OFFSET, Uo, pT), KY._2T(VY, WY[TT], Uo, mT), KY._2T(VY, WY[Gx], Uo, wT), KY._2T(VY, WY.ARROW_FROM_FILL_COLOR, Uo, AT), KY._2T(VY, WY[IT], Uo, "fromArrowFillGradient"), KY._2T(VY, WY[Ux], Uo, ST), KY._2T(VY, WY[sm], Uo, "fromArrowLineDashOffset"), KY._2T(VY, WY.ARROW_FROM_LINE_JOIN, Uo, kT), KY._2T(VY, WY[jx], Uo, CT), KY._2T(VY, WY.ARROW_TO_SIZE, Uo, LT), KY._2T(VY, WY[Qx], Uo, RT), KY._2T(VY, WY[pb], Uo, fT), KY._2T(VY, WY[hm], Uo, PT), KY._2T(VY, WY[ip], Uo, DT), KY._2T(VY, WY[ap], Uo, GT), KY._2T(VY, WY[fp], Uo, $T), KY._2T(VY, WY[sp], Uo, YT), KY._2T(VY, WY[rp], Uo, "toArrowLineDashOffset"), KY._2T(VY, WY[rm], Uo, WT), KY._2T(VY, WY[cp], Uo, UT);
  var QY = function (t, i) {
    this[jd] = new yB, vN(this, QY, arguments), this.id = this[Nu].id, this[qy] = i, this._gY = [], this._d1 = new YY
  };

  function qY(t, i, n, e) {
    if (e != OF[zy])
      if (e != OF.PROPERTY_TYPE_CLIENT) {
        if (e != OF.PROPERTY_TYPE_STYLE) return !1;
        t.setStyle(n, i)
      } else t.set(n, i);
    else t[n] = i
  }
  QY[_] = {
    syncSelection: !1,
    graph: null,
    layoutByAnchorPoint: !1,
    _d1: null,
    _gY: null,
    addChild: function (t, i) {
      t._kK = this, i !== k ? uN(this._gY, t, i) : this._gY.push(t), t._eX && this[am](t), this[om](), this[fm](), this[cm] = !0
    },
    removeChild: function (t) {
      this._d1.removeBinding(t), t._kK = null, _N(this._gY, t), this._kF && this._kF.remove(t), this.invalidateSize(), this[cm] = !0
    },
    getProperty: function (t, i) {
      return i == OF.PROPERTY_TYPE_STYLE ? this[qy][um](this[Nu], t) : i == OF.PROPERTY_TYPE_CLIENT ? this[Nu].get(t) : this.$data[t]
    },
    getStyle: function (t) {
      return this[qy].getStyle(this[Nu], t)
    },
    _$z: function (t, i, n) {
      var e = this._d1[_m](this, t, i, n);
      return UY[_m](this, t, i, n) || e
    },
    onPropertyChange: function (t) {
      if (zl == t[Ti]) return this[rv](), !0;
      if ($v != t[Oi]) return this._$z(t.kind, t[an] || HY, t.value);
      if (Rl == t[Ti]) return this[Rl](), !0;
      var i = t.value;
      return !(!i || !i.ui || (en == t[Ti] ? this._9U(i) : o == t[Ti] && this[uo](i.ui), 0))
    },
    label: null,
    initLabel: function () {
      var t = new iW;
      t[P_] = t_, this.addChild(t), this[t_] = t
    },
    initialize: function () {
      this[lm](), this[Nu][Yv] && this[Nu]._oBY.forEach(this._9U, this), UY[dm](this), this._d1[dm](this, !1)
    },
    addBinding: function (t, i) {
      if (!i[tg]) return !1;
      i.target = t, this._d1._22(i[tg], i)
    },
    _gZ: function (t, i) {
      var n = this[Nu];
      if (!n._oBY) return !1;
      var e = n[Yv][It](t.id);
      if (!e || !e[vm]) return !1;
      var s = e[vm];
      if (HN(s)) {
        var h = !1;
        return aN(s, function (t) {
          if (Ki == t.bindingProperty) return h = qY(n, i, t[tg], t.propertyType), !1
        }, this), h
      }
      return Ki == s[Jy] && qY(n, i, s[tg], s.propertyType)
    },
    _9U: function (t) {
      var i = t.ui;
      if (i) {
        var n = t[vm];
        n && (Array[W](n) ? n[Mt](function (t) {
          this.addBinding(i, t)
        }, this) : this[bm](i, n)), this.addChild(i)
      }
    },
    validate: function () {
      return this[ke] || (this.initialize(), this[ke] = !0), this[Ny]()
    },
    _$f: !0,
    invalidateChildrenIndex: function () {
      this._$f = !0
    },
    doValidate: function () {
      if (this._1L && (this._1L = !1, this[ym]() && (this[gm](), this.$invalidateSize = !0), this._$f && (this._$f = !1, CN ? this._gY = rN(this._gY, JY) : this._gY[Zl](JY))), KG[p](this) && (this[Ly] = !0), this.$invalidateRotate) {
        QG[p](this), this[jd][ao](this._h0);
        var t = this[Em] || 0,
          i = Math.max(this.$selectionBorder || 0, this.$shadowOffsetX || 0, this[xm] || 0),
          n = Math.max(this.$shadowOffsetY || 0, this[pm] || 0),
          e = Math.max(t, this[Tm], this[mm]),
          s = (e += sB.UI_BOUNDS_GROW || 0) - i,
          h = e + i,
          r = e - n,
          a = e + n;
        return s < 0 && (s = 0), h < 0 && (h = 0), r < 0 && (r = 0), a < 0 && (a = 0), this.uiBounds[Ru](r, s, a, h), this[ky] && this[ky](), this[wm] = !0
      }
    },
    validateChildren: function () {
      var t = this[cm];
      this.$invalidateChild = !1;
      var i = this[Om],
        n = this[Am];
      i && (i[Im] = this[Im], i.$renderColorBlendMode = this[Sm], i[Mm] = this[Mm], i[Tm] = this[Tm], i.$shadowOffsetX = this[km], i[Cm] = this[Cm]), this[Am] = !1, i && i._1L && (n = i.validate() || n, i.$x = 0, i.$y = 0, i[Ly] && QG[p](i), t = !0);
      for (var e = 0, s = this._gY.length; e < s; e++) {
        var h = this._gY[e];
        if (h != i) {
          var r = h._1L && h.validate();
          (r || n) && h._jC && qG(h, i), !t && r && (t = !0)
        }
      }
      return t
    },
    measure: function () {
      var t, i;
      this._kG.clear();
      for (var n = 0, e = this._gY.length; n < e; n++)(t = this._gY[n])._jC && ((i = t._h0)[Yt] <= 0 || i.height <= 0 || this._kG.addRect(t.$x + i.x, t.$y + i.y, i[Yt], i[Wt]))
    },
    _kF: null,
    _oAG: function (t) {
      return this._kF ? t[pp] ? this._kF.add(t) : this._kF[o](t) : t[pp] ? (this._kF = new hB, this._kF.add(t)) : void 0
    },
    draw: function (t, i, n, e) {
      for (var s, h = 0, r = this._gY[N]; h < r; h++)(s = this._gY[h])._jC && !s[pp] && s._kL(t, i, n, this)
    },
    _9W: function (t, i) {
      if (!this._jC || !this._kF || !this._kF[N]) return !1;
      var n;
      t.save(), t[Ya](this.$x, this.$y), this[lu] && t[kt](this[lu]), this[uu] && this[_u] && t[Ya](-this[_u].x, -this[_u].y), this[Po] && (t[Po] = this[Po], t.shadowBlur = this.shadowBlur * i, t.shadowOffsetX = this[No] * i, t[Bo] = this.shadowOffsetY * i), t[Ua]();
      for (var e = 0, s = this._gY[N]; e < s; e++)(n = this._gY[e])._jC && n.showOnTop && n._kL(t, i, this[av], this);
      t.restore()
    },
    doHitTest: function (t, i, n) {
      if (n) {
        if (!this._kG[Xt](t - n, i - n, 2 * n, 2 * n)) return !1
      } else if (!this._kG.intersectsPoint(t, i)) return !1;
      return this[Lm](t, i, n)
    },
    hitTestChildren: function (t, i, n) {
      for (var e, s = this._gY[N] - 1; 0 <= s; s--)
        if ((e = this._gY[s])._jC && e[Wo](t, i, n)) return e;
      return !1
    },
    destroy: function () {
      this[Xu] = !0;
      for (var t = this._gY[N] - 1; 0 <= t; t--) this._gY[t].destroy()
    }
  }, dN(QY, NY), qN(QY.prototype, {
    renderColorBlendMode: {
      get: function () {
        return this[Sm]
      },
      set: function (t) {
        this.$renderColorBlendMode = t, this._1L = !0, this[yo] && (this[yo].renderColorBlendMode = this[Sm])
      }
    },
    renderColor: {
      get: function () {
        return this[Im]
      },
      set: function (t) {
        this[Im] = t, this._1L = !0, this[yo] && (this[yo].renderColor = this.$renderColor)
      }
    },
    bodyBounds: {
      get: function () {
        if (this.$invalidateBounds) {
          this.$invalidateBounds = !1;
          var t, i = this[yo];
          t = i && i._jC && !this._$u() ? i._h0[l]() : this._8O[l](), this[kt] && (t.original = t[l](), t[kt] = this.rotate, t.tx = this.x, t.ty = this.y, MF(t, this.rotate, t)), t.x += this.$x, t.y += this.$y, this._dA = t
        }
        return this._dA
      }
    },
    bounds: {
      get: function () {
        return new yB((this.$x || 0) + this[jd].x, (this.$y || 0) + this[jd].y, this[jd][Yt], this[jd][Wt])
      }
    },
    body: {
      get: function () {
        return this[Om]
      },
      set: function (t) {
        t && this[Om] != t && (this[Om] = t, this[Am] = !0, this[fm]())
      }
    }
  }), sB[Rm] = 1;
  var tW = function (t) {
    vN(this, tW, arguments)
  };
  tW[_] = {
    strokeStyle: Pm,
    lineWidth: 0,
    fillColor: null,
    fillGradient: null,
    _kI: 1,
    _kJ: 1,
    outline: 0,
    onDataChanged: function (t, i) {
      bN(this, tW, Gy, arguments), this._lN && this._8H && this._lN._6Z(this._8H, this), t && this._d3(t)
    },
    _d3: function (t) {
      this._lN = yG(t), this._lN[ro](), this._lN._mQ != fG && !this._lN._6X() || (this._8H || (this._8H = function (t) {
        this[uv](), this._kK && this._kK.graph && (this._kK[fm](), this._kK.graph[Rl]())
      }), this._lN._oA8(this._8H, this))
    },
    _lN: null,
    initialize: function () {
      this._d3(this[Nu])
    },
    _5V: function () {
      return this._lN && this._lN.draw
    },
    _o9I: function (t) {
      if (!t || t[Yt] <= 0 || t[Wt] <= 0 || !this[Dm] || !(this[Pl] instanceof Object)) return this._kI = 1, void(this._kJ = 1);
      var i = this[Pl][Yt],
        n = this[Pl][Wt];
      if (i !== k && null !== i || (i = -1), n !== k && null !== n || (n = -1), i < 0 && n < 0) return this._kI = 1, void(this._kJ = 1);
      var e, s, h = t[Yt],
        r = t.height;
      0 <= i && (e = i / h), 0 <= n && (s = n / r), i < 0 ? e = s : n < 0 && (s = e), this._kI = e, this._kJ = s
    },
    validateSize: function () {
      if (this.$invalidateScale) {
        this[Nm] = !1;
        var t = this._originalBounds;
        this._kI, this._kJ, this._o9I(t), this[Bm](t[Yt] * this._kI, t[Wt] * this._kJ, t.x * this._kI, t.y * this._kJ)
      }
    },
    measure: function () {
      var t = this._lN.getBounds(this[Pa] + this[Pf]);
      if (t) return this[Nm] = !0, void(this[Fm] = t[l]());
      this._kG.set(0, 0, 0, 0)
    },
    onBoundsChanged: function () {
      this.$invalidateFillGradient = !0
    },
    _1U: function () {
      this[Gm] = !1, this.fillGradient ? this[Wf] = xG[_][ku][p](this.$fillGradient, this._8O) : this[Wf] = null
    },
    _lE: function (t) {
      var i, n;
      if (Uh == this[$m]) n = -(i = 1);
      else {
        if (Hh != this[$m]) return;
        i = -1, n = 1
      }
      var e = this._kG.cx,
        s = this._kG.cy;
      t[Ya](e, s), t[Wa](i, n), t[Ya](-e, -s)
    },
    draw: function (t, i, n, e) {
      if (this._kI && this._kJ) {
        if (this.$invalidateFillGradient && this._1U(), t[Ga](), this[$m] && this._lE(t), this._lN._mQ == uG) return t[Wa](this._kI, this._kJ), this._lN._mO[no](t, i, this, n, e || this), void t[Ka]();
        n && this._8R(t, i, e), this._lN[no](t, i, this, this._kI, this._kJ), t[Ka]()
      }
    },
    doHitTest: function (t, i, n) {
      if (this._lN[Wo]) {
        Uh == this[$m] ? i = 2 * this._kG.cy - i : Hh == this.$adjustType && (t = 2 * this._kG.cx - t), t /= this._kI, i /= this._kJ;
        var e = (this._kI + this._kJ) / 2;
        return 1 < e && (n /= e, n |= 0), this._lN._mO instanceof NG ? this._lN._mO[Wo](t, i, n, !0, this[Ym], this.$fillColor || this.$fillGradient) : this._lN[Wo](t, i, n)
      }
      return !0
    },
    $invalidateScale: !0,
    $invalidateFillGradient: !0
  }, dN(tW, NY), FY(tW[_], {
    adjustType: {},
    fillColor: {},
    size: {
      validateFlags: [xh, Wm]
    },
    fillGradient: {
      validateFlags: [Um]
    }
  }), qN(tW[_], {
    originalBounds: {
      get: function () {
        return this._originalBounds
      }
    }
  }), sB[Hm] = EB[ui];
  var iW = function (t) {
    vN(this, iW, arguments), this[bp] = sB[Vm]
  };
  iW.prototype = {
    color: sB[Vm],
    showPointer: !0,
    fontSize: null,
    fontFamily: null,
    fontStyle: null,
    _i7: null,
    alignPosition: null,
    measure: function () {
      this[Nu] = "" + this[Nu], this[jm];
      var t = function t(i, n, e, s, h, r) {
        if (!i) return {
          width: 0,
          height: 0
        };
        if (n = n || sB[da], NF && n < 9) {
          var a = n / 9,
            o = t(i, 9, e, s, h);
          return o.width *= a, o.height *= a, o
        }
        var f = DF();
        f[jm] = r || BF(e, n, s);
        for (var c = n * (h = h || sB[ia]), u = 0, _ = 0, l = i[G](F_), d = 0, v = l[N]; d < v; d++) {
          var b = l[d];
          u = Math.max(f[Xm](b)[Yt], u), _ += c
        }
        return {
          width: u,
          height: _
        }
      }(this.$data, this.$fontSize, this[Zm], this[zm], sB[ia], this[Km]);
      if (this._i7 = t, this[Dm]) {
        var i = this.$size[Yt] || 0,
          n = this[Dm].height || 0;
        return this.setMeasuredBounds(i > t[Yt] ? i : t.width, n > t.height ? n : t.height)
      }
      return this.setMeasuredBounds(t.width, t[Wt])
    },
    doHitTest: function (t, i, n) {
      return !!this[Nu] && ((e = n) < 1 && (e = 1), function (t, i, n, e, s) {
        var h = DF(n = Math[or](n) || 1, e = Math.round(e) || 1);
        h.setTransform(1, 0, 0, 1, -t, -i), s[no](h);
        var r = FF(h, 0, 0, n, e);
        if (!r) return !1;
        for (var a = (r = r.data).length / 4; 0 < a--;)
          if (0 < r[4 * a - 1]) return !0;
        return !1
      }(t - e, i - e, 2 * e, 2 * e, this));
      var e
    },
    draw: function (t, i, n, e) {
      n && this._8R(t, i, e);
      var s = GY(this);
      if (s) {
        var h = iG(s);
        oB < h && h < 3 * oB && (t.translate(this._kG[Yt] / 2, this._kG[Wt] / 2), t[kt](Math.PI), t[Ya](-this._kG.width / 2, -this._kG.height / 2))
      }
      var r = this[Ap] || sB[Hm],
        a = r[ti],
        o = r.verticalPosition,
        f = 0;
      ci == a ? (a = We, f += this._kG[Yt] / 2) : a == pB ? (a = Bt, f += this._kG[Yt]) : a = Kt;
      var c = 0;
      oi == o ? c = (this._kG[Wt] - this._i7[Wt]) / 2 : o == mB && (c = this._kG[Wt] - this._i7.height), t[Ba] = this[bp],
        function (t, i, n, e, s, h, r, a, o, f) {
          if (t[Ga](), t[Ya](n, e), NF && r < 9) {
            var c = r / 9;
            t[Wa](c, c), r = 9, f = null
          }
          o = o || sB[ia], o *= r = r || sB.FONT_SIZE, t[jm] = f || BF(h, r, a), t[Jm] = s, t.textBaseline = Qm;
          for (var u = o / 2, _ = i[G](F_), l = 0, d = _[N]; l < d; l++) {
            var v = _[l];
            t[ll](v, 0, u), u += o
          }
          t[Ka]()
        }(t, this.$data, f, c, a, this.$fontFamily, this.$fontSize, this.$fontStyle, sB[ia], this.$font)
    },
    _5V: function () {
      return null != this[Nu] || this[Dm]
    },
    $invalidateFont: !0
  }, dN(iW, NY), FY(iW[_], {
    size: {
      validateFlags: [Xy]
    },
    fontStyle: {
      validateFlags: [Xy, qm]
    },
    fontSize: {
      validateFlags: [Xy, qm]
    },
    fontFamily: {
      validateFlags: [Xy, qm]
    }
  }), qN(iW[_], {
    font: {
      get: function () {
        return this[tw] && (this[tw] = !1, this[Km] = (this[zm] || sB.FONT_STYLE) + $ + (this.$fontSize || sB.FONT_SIZE) + xt + (this[Zm] || sB[pt])), this.$font
      }
    }
  });
  var nW = function (t) {
    t = t || new NG, this.pathBounds = new yB, vN(this, nW, [t])
  };

  function eW(t, i) {
    vN(this, eW, arguments)
  }

  function sW(t, i) {
    vN(this, sW, arguments)
  }
  nW[_] = {
    layoutByPath: !0,
    layoutByAnchorPoint: !1,
    measure: function () {
      this[iw] = !0, this[nw] = !0, this.$data.getBounds(this[Ym] + this[ew], this[sw]), this.setMeasuredBounds(this[sw])
    },
    validateSize: function () {
      if (this.$invalidateFromArrow || this.$invalidateToArrow) {
        var t, i = this[sw].clone();
        this[iw] && (this.$invalidateFromArrow = !1, (t = this[hw]()) && i.add(t)), this[nw] && (this[nw] = !1, (t = this[rw]()) && i.add(t)), this[Bm](i)
      }
    },
    validateFromArrow: function () {
      if (this[Nu]._kV && this.$fromArrow) {
        var t = this[Nu],
          i = 0,
          n = 0,
          e = this[aw];
        e && (isNaN(e) && (e.x || e.y) ? (i += e.x || 0, n += e.y || 0) : i += e || 0, 0 < i && i < 1 && (i *= t._kV)), this[ow] = t.getLocation(i, n), this[ow].rotate = Math.PI + this.fromArrowLocation[kt] || 0, this[fw] = fW(this.$fromArrow, this[cw]);
        var s = this[fw].getBounds(this[uw].lineWidth + this[uw].outline);
        return this[_w] instanceof wF[lw] ? this.fromArrowStyles[Wf] = xG[_][ku][p](this[_w], s) : this[uw] && (this[uw][Wf] = null), s[Fy](this.fromArrowLocation.x, this[ow].y), kF(s, this[ow][kt], s, this[ow].x, this.fromArrowLocation.y), s
      }
      this[fw] = null
    },
    validateToArrow: function () {
      if (this[Nu]._kV && this[dw]) {
        var t = this[Nu],
          i = 0,
          n = 0,
          e = this[vw];
        e && (isNaN(e) && (e.x || e.y) ? (i += e.x || 0, n += e.y || 0) : i += e || 0), i < 0 && -1 < i && (i *= t._kV), i += t._kV, this[bw] = t[xf](i, n), this.$toArrowShape = fW(this.$toArrow, this[yw]);
        var s = this[gw][ho](this[Ew].lineWidth + this.toArrowStyles[Pf]);
        return this[$T] instanceof wF.Gradient ? this[Ew][Wf] = xG[_].generatorGradient.call(this[$T], s) : this[Ew] && (this[Ew]._fillGradient = null), s[Fy](this[bw].x, this[bw].y), kF(s, this.toArrowLocation.rotate, s, this.toArrowLocation.x, this[bw].y), s
      }
      this[gw] = null
    },
    _2I: function (t) {
      var i = t ? "from" : nb,
        n = this[i + xw];
      n === k && (n = this[Ym]);
      var e = this[i + pw];
      e === k && (e = this.strokeStyle);
      var s = this[i + Tw];
      s || (this[i + Tw] = s = {}), s[Pa] = n, s[Da] = e, s[jf] = this[i + mw], s.lineDashOffset = this[i + ww], s[$f] = this[i + Ow], s[Yf] = this[i + Aw], s[Df] = this[i + Iw], s[Nf] = this[i + Sw], s.outline = this[i + Mw] || 0, s[Ff] = this[i + kw]
    },
    doValidate: function () {
      return this[Cw] && this._2I(!0), this[dw] && this._2I(!1), bN(this, nW, Ny)
    },
    drawArrow: function (t, i, n, e) {
      if (this[Cw] && this.$fromArrowShape) {
        t.save();
        var s = (a = this.fromArrowLocation).x,
          h = a.y,
          r = a[kt];
        t[Ya](s, h), r && t[kt](r), this[fw][no](t, i, this.fromArrowStyles, n, e), t[Ka]()
      }
      var a;
      this[dw] && this[gw] && (t[Ga](), s = (a = this[bw]).x, h = a.y, r = a[kt], t[Ya](s, h), r && t[kt](r), this[gw][no](t, i, this[Ew], n, e), t.restore())
    },
    outlineStyle: null,
    outline: 0,
    onBoundsChanged: function () {
      this.$invalidateFillGradient = !0
    },
    _1U: function () {
      this.$invalidateFillGradient = !1, this[Lw] ? this[Wf] = xG[_][ku][p](this.$fillGradient, this._8O) : this[Wf] = null
    },
    draw: function (t, i, n, e) {
      this[Gm] && this._1U(), this[Nu][no](t, i, this, n, e), this[Rw](t, i, n, e)
    },
    doHitTest: function (t, i, n) {
      if (this.$data.hitTest(t, i, n, !0, this[Ym] + this[ew], this[Pw] || this[Lw])) return !0;
      if (this[dw] && this[gw]) {
        var e = t - this[bw].x,
          s = i - this.toArrowLocation.y;
        this.toArrowLocation[kt] && (e = (r = AF(e, s, -this[bw][kt])).x, s = r.y);
        var h = this[Ew][$f] || this.toArrowStyles[Yf];
        if (this[gw][Wo](e, s, n, !0, this.toArrowStyles.lineWidth, h)) return !0
      }
      var r;
      if (this[Cw] && this.$fromArrowShape && (e = t - this[ow].x, s = i - this[ow].y, this[ow].rotate && (e = (r = AF(e, s, -this[ow][kt])).x, s = r.y), h = this[uw].fillColor || this[uw][Yf], this[fw][Wo](e, s, n, !0, this[uw][Pa], h))) return !0;
      return !1
    },
    $fromArrowOutline: 0,
    $toArrowOutline: 0,
    $invalidateFillGradient: !0,
    $invalidateFromArrow: !0,
    $invalidateToArrow: !0
  }, dN(nW, NY), FY(nW[_], {
    strokeStyle: {
      validateFlags: [Dw, Nw]
    },
    fillColor: {},
    fillGradient: {
      validateFlags: [Um]
    },
    fromArrowOffset: {
      validateFlags: [Dw, xh]
    },
    fromArrowSize: {
      validateFlags: [Dw, xh]
    },
    fromArrow: {
      validateFlags: [Dw, xh]
    },
    fromArrowOutline: {
      validateFlags: [Dw, xh]
    },
    fromArrowStroke: {
      validateFlags: [Dw, xh]
    },
    fromArrowStrokeStyle: {
      validateFlags: [Dw]
    },
    toArrowOffset: {
      validateFlags: [Nw, xh]
    },
    toArrowSize: {
      validateFlags: [Nw, xh]
    },
    toArrow: {
      validateFlags: [Nw, xh]
    },
    toArrowOutline: {
      validateFlags: [Nw, xh]
    },
    toArrowStroke: {
      validateFlags: [Nw, xh]
    },
    toArrowStrokeStyle: {
      validateFlags: [Nw]
    },
    outline: {
      value: 0,
      validateFlags: [Xy]
    }
  }), qN(nW[_], {
    length: {
      get: function () {
        return this[Ki].length
      }
    }
  }), eW[_] = {
    shape: null,
    path: null,
    initialize: function () {
      bN(this, eW, Dy), this.path = new NG, this[Gd]._f7 = !1, this.shape = new nW(this[Gd]), this[Bw](this[sT], 0), this[Om] = this[sT], ZY[dm](this)
    },
    _1J: !0,
    _5T: null,
    _$u: function () {
      return !1
    },
    _4G: function () {
      return !1
    },
    validatePoints: function () {
      this[sT][uv]();
      var t = this[Nu],
        i = this.path;
      i.clear();
      var n = t[Wd],
        e = t.toAgent;
      n && e && function (g, t, i, n, e) {
        var s = n == e,
          h = g[qy][As](n),
          r = s ? h : g[qy][As](e);
        if (h && r) {
          var a = t.edgeType,
            o = g[Fw](h),
            f = s ? o : g[Fw](r),
            c = t.hasPathSegments();
          if (s && !c) return g[Gw](g[Gd], h, a, o);
          var u, _, l, d, v, b, y, E, x = (v = g, b = o, y = h[$w](v.getStyle(WY[yT]), b), (E = v.getStyle(WY[hx])) && (y.x += E.x || 0, y.y += E.y || 0), y),
            p = (u = g, _ = f, l = r[$w](u[um](WY[Yw]), _), (d = u[um](WY[bT])) && (l.x += d.x || 0, l.y += d.y || 0), l);
          if (!s && !a && !c) {
            var T = n[Mb];
            if (T != e[Mb]) {
              var m, w, O, A;
              A = T ? (m = h, w = o, O = r, f) : (m = r, w = f, O = h, o);
              var I = function (t, i, n, e, s, h) {
                var r = s.cx,
                  a = s.cy,
                  o = Math.cos(h),
                  f = Math.sin(h),
                  c = dW(i, t, {
                    x: r,
                    y: a
                  }, -o, -f);
                if (!c) {
                  var u = r < t.x,
                    _ = r > t[Bt],
                    l = a < t.y,
                    d = a > t[Ft],
                    v = t.cx,
                    b = t.cy,
                    y = u || _,
                    g = l || d;
                  h = Math[Pt](a - b, r - v), y || g || (h += Math.PI), c = dW(i, t, {
                    x: r,
                    y: a
                  }, -(o = Math.cos(h)), -(f = Math.sin(h))) || {
                    x: v,
                    y: b
                  }
                }
                var E = dW(e, s, {
                  x: c.x,
                  y: c.y
                }, -c[Ww] || o, -c.perY || f, !1) || {
                  x: r,
                  y: a
                };
                return n ? [c, E] : [E, c]
              }(w, m, T, O, A, t[ef]);
              if (I && 2 == I[N]) {
                var S = I[0],
                  M = I[1];
                return i[Ia](S.x, S.y), M.x == S.x && M.y == S.y && (M.y += .01), i[ja](M.x, M.y), i._6W = !0
              }
            }
          }
          g._3M(t, i, h, r, a, o, f, x, p), (!s && !1 !== i._hB[Uw] || c) && function (t, i, n, e, s, h, r) {
            var a = g[uT],
              o = g.toAtEdge;
            if (!a && !o) return _W(t._hB, h, r);
            var f = t._hB;
            if (f.length) {
              if (a) lW(i, e, f[0][Ea], h, k, k);
              if (o) {
                var c, u = f[f[N] - 1],
                  _ = u[xa],
                  l = u[Ns][N],
                  d = u[bf] || _.x === k || _.y === k;
                4 <= l && (d || s.contains(_.x, _.y)) && (d || (r = _), c = !0, _ = {
                  x: u.points[l - 4],
                  y: u[Ns][l - 3]
                }, s[Fn](_.x, _.y) && (r = _, 6 <= l ? (_ = {
                  x: u.points[l - 6],
                  y: u[Ns][l - 5]
                }, u[Ns] = u[Ns][C](0, 4), u[Oi] = CG) : 1 == f.length ? (_ = {
                  x: h.x,
                  y: h.y
                }, u[Ns] = u[Ns].slice(0, 2), u.type = kG) : _ = (u = f[f[N] - 2])[xa])), lW(n, s, _, r, k, k), c && (l = u.points[N], u.points[l - 2] = r.x, u[Ns][l - 1] = r.y, r = null)
              }
            } else {
              var v = Math[Pt](r.y - h.y, r.x - h.x),
                b = Math.cos(v),
                y = Math.sin(v);
              a && lW(i, e, r, h, b, y), o && lW(n, s, h, r, -b, -y)
            }
            _W(t._hB, h, r)
          }(i, h, r, o, f, x, p), delete i._hB[Uw], i._6W = !0
        }
      }(this, t, i, n, e)
    },
    getEndPointBounds: function (t) {
      return t[Hw]()
    },
    _3M: function (t, i, n, e, s, h, r, a, o) {
      t[Qv]() ? i[Ob] = t.pathSegments[un]() : n != e ? this[Vw](i, n, e, s, h, r, a, o) : this[Gw](i, n, s, h, a, o)
    },
    drawLoopedEdge: function (t, i, n, e, s, h) {
      ! function (t, i, n) {
        var e = t.getStyle(WY[lx]),
          s = t._24(),
          h = e + .2 * s,
          r = i.x + i[Yt] - h,
          a = i.y,
          o = i.x + i[Yt],
          f = i.y + h;
        e += s;
        var c = {
            x: r,
            y: a
          },
          u = {
            x: i.x + i.width + .707 * e,
            y: i.y + -.707 * e
          },
          _ = {
            x: o,
            y: f
          },
          l = c.x,
          d = u.x,
          v = _.x,
          b = c.y,
          y = u.y,
          g = _.y,
          E = ((g - b) * (y * y - b * b + d * d - l * l) + (y - b) * (b * b - g * g + l * l - v * v)) / (2 * (d - l) * (g - b) - 2 * (v - l) * (y - b)),
          x = ((v - l) * (d * d - l * l + y * y - b * b) + (d - l) * (l * l - v * v + b * b - g * g)) / (2 * (y - b) * (v - l) - 2 * (g - b) * (d - l)),
          p = (h = Math[Gt]((l - E) * (l - E) + (b - x) * (b - x)), Math[Pt](c.y - x, c.x - E)),
          T = Math.atan2(_.y - x, _.x - E) - p;
        T < 0 && (T += 2 * Math.PI),
          function (t, i, n, e, s, h, r) {
            var a, o, f, c, u, _, l, d, v, b;
            if (Math.abs(e) > 2 * Math.PI && (e = 2 * Math.PI), a = e / (c = Math.ceil(Math.abs(e) / (Math.PI / 4))), o = n, 0 < c) {
              u = t + Math.cos(o) * s, _ = i + Math.sin(o) * h, moveTo ? r[Ia](u, _) : r[ja](u, _);
              for (var y = 0; y < c; y++) f = (o += a) - a / 2, l = t + Math.cos(o) * s, d = i + Math.sin(o) * h, v = t + Math.cos(f) * (s / Math.cos(a / 2)), b = i + Math.sin(f) * (h / Math.cos(a / 2)), r[mb](v, b, l, d)
            }
          }(E, x, p, T, h, h, n)
      }(this, e, t)
    },
    drawEdge: function (t, i, n, e, s, h, r, a) {
      if (e == OF[jw]) {
        var o = (r.x + a.x) / 2,
          f = (r.y + a.y) / 2,
          c = r.x - a.x,
          u = r.y - a.y,
          _ = Math.sqrt(c * c + u * u),
          l = Math[Pt](u, c);
        l += Math.PI / 6, 30 < (_ *= .04) && (_ = 30);
        var d = Math.cos(l) * _,
          v = Math.sin(l) * _;
        return t[ja](o - v, f + d), void t.lineTo(o + v, f - d)
      }
      var b = function (t, i, n, e, s, h) {
        if (i[Qv]()) return i[Oa];
        var a, r, o, f, c, u, _, b, y, l, d, v, g, E, x, p, T = i[sb];
        if ((p = T) == OF[EO] || p == OF[Zw] || p == OF[nO] || p == OF.EDGE_TYPE_ORTHOGONAL_VERTICAL || p == OF.EDGE_TYPE_VERTICAL_HORIZONTAL || p == OF.EDGE_TYPE_EXTEND_TOP || p == OF[zw] || p == OF[eO] || p == OF[Kw] || p == OF[rO] || p == OF.EDGE_TYPE_ELBOW_HORIZONTAL || p == OF[tO]) {
          var m = (a = T, f = t, c = s, u = h, E = function (t, i) {
            if (null != a) {
              if (a == OF[Xw] || a == OF[Zw] || a == OF.EDGE_TYPE_HORIZONTAL_VERTICAL || a == OF[zw] || a == OF[Kw]) return !0;
              if (a == OF.EDGE_TYPE_ELBOW_VERTICAL || a == OF[Jw] || a == OF[Qw] || a == OF[qw] || a == OF.EDGE_TYPE_EXTEND_BOTTOM) return !1
            }
            var n, e, s, h, r = (s = t, h = i, Math.max(s.x + (s.width || 0), h.x + (h[Yt] || 0)) - Math.min(s.x, h.x) - (s[Yt] || 0) - (h[Yt] || 0));
            return (n = t, e = i, Math.max(n.y + (n[Wt] || 0), e.y + (e[Wt] || 0)) - Math.min(n.y, e.y) - (n[Wt] || 0) - (e.height || 0)) <= r
          }(r = n, o = e), x = [], !a || a != OF.EDGE_TYPE_ELBOW && a != OF.EDGE_TYPE_ELBOW_HORIZONTAL && a != OF[tO] ? function (t, i, n, e, s, h, E, x) {
            var r, a, o, f, c, u, _ = h[um](WY[yx]),
              l = null == _;
            if (null != _) {
              var d = (new yB)[iO](i).union(n);
              d.intersects(_) || (r = _.x, a = _.y, o = d.y, f = d.x, c = d.bottom, u = d[Bt], s = !(a < o && f - r < o - a && r - u < o - a || c < a && f - r < a - c && r - u < a - c))
            } else _ = function (t, i, n, e, s) {
              if (t == OF[nO]) return {
                x: x.x,
                y: E.y
              };
              if (t == OF[Qw]) return {
                x: E.x,
                y: x.y
              };
              var h, r, a, o, f, c, u, _;
              if (null != t && (t == OF[qw] || t == OF[zw] || t == OF.EDGE_TYPE_EXTEND_BOTTOM || t == OF[Kw])) {
                var l = Math.min(n.y, e.y),
                  d = Math.min(n.x, e.x),
                  v = Math.max(n.bottom, e[Ft]),
                  b = Math.max(n[Bt], e[Bt]);
                if (h = s[um](WY[vx]), t == OF[qw]) return new fB((d + b) / 2, l - h);
                if (t == OF.EDGE_TYPE_EXTEND_LEFT) return new fB(d - h, (l + v) / 2);
                if (t == OF[eO]) return new fB((d + b) / 2, v + h);
                if (t == OF.EDGE_TYPE_EXTEND_RIGHT) return new fB(b + h, (l + v) / 2)
              }
              if ((h = s[um](WY[Ex]) ? (r = i, a = n, o = e, f = s.getStyle(WY[xx]), c = f, u = a, _ = o, (r ? rW(c, u.x, u[Bt], _.x, _[Bt]) : rW(c, u.y, u[Ft], _.y, _[Ft])) * f) : s[um](WY[Tx])) == Number[sO] || h == Number[hO]) return new fB(e.x + e.width / 2, e.y + e[Wt] / 2);
              if (0 == h) return new fB(n.x + n[Yt] / 2, n.y + n.height / 2);
              if (i) {
                var y = n.x + n.right < e.x + e.right;
                return new fB(aW(y, h, n.x, n[Yt]), n.y + n.height / 2)
              }
              var g = n.y + n[Ft] < e.y + e[Ft];
              return new fB(n.x + n.width / 2, aW(g, h, n.y, n.height))
            }(t, s, i, n, h);
            s ? function (t, i, n, e, s, h, r) {
              var a = Math.max(t.x, i.x),
                o = Math.min(t.x + t.width, i.x + i.width),
                f = null != n ? n.x : o + (a - o) / 2,
                c = h ? h.y : t.y + t[Wt] / 2,
                u = r ? r.y : i.y + i[Wt] / 2;
              if (0 == s && null != n && (n.y >= t.y && n.y <= t.y + t[Wt] && (c = n.y), n.y >= i.y && n.y <= i.y + i.height && (u = n.y)), oW(i, f, c) || oW(t, f, c) || e[M](new fB(f, c)), oW(i, f, u) || oW(t, f, u) || e.push(new fB(f, u)), 0 == e[N])
                if (null != n) oW(i, f, n.y) || oW(t, f, n.y) || e[M](new fB(f, n.y));
                else {
                  var _ = Math.max(t.y, i.y),
                    l = Math.min(t.y + t[Wt], i.y + i.height);
                  e[M](new fB(f, _ + (l - _) / 2))
                }
            }(i, n, _, e, l, E, x) : function (t, i, n, e, s, h, r) {
              var a = Math.max(t.y, i.y),
                o = Math.min(t.y + t[Wt], i.y + i[Wt]),
                f = null != n ? n.y : o + (a - o) / 2,
                c = h ? h.x : t.x + t[Yt] / 2,
                u = r ? r.x : i.x + i[Yt] / 2;
              if (0 == s && null != n && (n.x >= t.x && n.x <= t.x + t.width && (c = n.x), n.x >= i.x && n.x <= i.x + i[Yt] && (u = n.x)), oW(i, c, f) || oW(t, c, f) || e.push(new fB(c, f)), oW(i, u, f) || oW(t, u, f) || e[M](new fB(u, f)), 0 == e[N])
                if (null != n) oW(i, n.x, f) || oW(t, n.x, f) || e[M](new fB(n.x, f));
                else {
                  var _ = Math.max(t.x, i.x),
                    l = Math.min(t.x + t[Yt], i.x + i.width);
                  e[M](new fB(_ + (l - _) / 2, f))
                }
            }(i, n, _, e, l, E, x)
          }(a, r, o, x, E, f, c, u) : (_ = E, b = r, y = o, l = x, d = f[um](WY[vx]), v = c, g = u, _ ? function (t, i, n, e) {
            var s = y.x + y[Yt] < b.x,
              h = b.x + b[Yt] < y.x,
              r = s ? b.x : b.x + b[Yt],
              a = n.y,
              o = h ? y.x : y.x + y[Yt],
              f = e.y,
              c = i,
              u = s ? -c : c,
              _ = new fB(r + u, a),
              l = new fB(o + (u = h ? -c : c), f);
            if (s == h) {
              var d = s ? Math.min(r, o) - i : Math.max(r, o) + i;
              t.push(new fB(d, a)), t[M](new fB(d, f))
            } else if (_.x < l.x == s) {
              var v = a + (f - a) / 2;
              t[M](_), t.push(new fB(_.x, v)), t.push(new fB(l.x, v)), t[M](l)
            } else t[M](_), t[M](l)
          }(l, d, v, g) : function (t, i, n, e) {
            var s = y.y + y[Wt] < b.y,
              h = b.y + b[Wt] < y.y,
              r = n.x,
              a = s ? b.y : b.y + b.height,
              o = e.x,
              f = h ? y.y : y.y + y[Wt],
              c = i,
              u = s ? -c : c,
              _ = new fB(r, a + u),
              l = new fB(o, f + (u = h ? -c : c));
            if (s == h) {
              var d = s ? Math.min(a, f) - i : Math.max(a, f) + i;
              t[M](new fB(r, d)), t.push(new fB(o, d))
            } else if (_.y < l.y == s) {
              var v = r + (o - r) / 2;
              t[M](_), t[M](new fB(v, _.y)), t.push(new fB(v, l.y)), t.push(l)
            } else t.push(_), t.push(l)
          }(l, d, v, g)), x);
          if (!m || !m.length) return null;
          uN(m, s, 0), m.push(h), T != OF[rO] && function (t, i) {
            var n = t[N];
            if (!(n < 3)) {
              var e = i[um](WY[wx]);
              if (e != OF[aO]) {
                var s, h, r = i[um](WY[Ax]),
                  a = 0,
                  o = 0;
                r && (WN(r) ? a = o = r : (a = r.x || 0, o = r.y || 0));
                for (var f, c, u = t[0], _ = t[1], l = 2; l < n; l++) {
                  var d = t[l],
                    v = _.x - u.x,
                    b = _.y - u.y,
                    y = d.x - _.x,
                    g = d.y - _.y,
                    E = !b || -JF < b && b < JF;
                  ((!v || -JF < v && v < JF) && (!g || -JF < g && g < JF) || E && (!y || -JF < y && y < JF)) && (c = E ? (s = Math.min(2 == l ? Math.abs(v) : Math.abs(v) / 2, a), h = Math.min(l == n - 1 ? Math.abs(g) : Math.abs(g) / 2, o), f = new fB(_.x - (0 < v ? s : -s), _.y), new fB(_.x, _.y + (0 < g ? h : -h))) : (s = Math.min(l == n - 1 ? Math.abs(y) : Math.abs(y) / 2, a), h = Math.min(2 == l ? Math.abs(b) : Math.abs(b) / 2, o), f = new fB(_.x, _.y - (0 < b ? h : -h)), new fB(_.x + (0 < y ? s : -s), _.y)), _N(t, _), l--, n--, f.x == u.x && f.y == u.y || (uN(t, f, l), l++, n++), e == OF[oO] ? (uN(t, c, l), l++, n++) : e == OF[fO] && (uN(t, [_, c], l), l++, n++)), u = _, _ = d
                }
              }
            }
          }(m, t);
          for (var w = [], O = m[N], A = 1; A < O - 1; A++) {
            var I = m[A];
            HN(I) ? w[M](new DG(CG, [I[0].x, I[0].y, I[1].x, I[1].y])) : w.push(new DG(kG, [I.x, I.y]))
          }
          return w
        }
        if (i[cO]) {
          var S = t._24();
          if (!S) return;
          return function (t, i, n, e, s, h) {
            i = _B(e, i.x, i.y, n.x, n.y), n = _B(s, n.x, n.y, i.x, i.y);
            var r = Math.PI / 2 + Math.atan2(n.y - i.y, n.x - i.x),
              a = t * Math.cos(r),
              o = t * Math.sin(r);
            i.x += a, i.y += o, n.x += a, n.y += o;
            var f = n.x - i.x,
              c = n.y - i.y;
            if (h != OF[Vr]) return h != OF[Xr] ? [new DG(LG, [i.x + .25 * f, i.y + .25 * c, i.x + .75 * f, i.y + .75 * c, k, k])] : (10 < Math[Gt](f * f + c * c) && (r = Math[Pt](n.y - i.y, n.x - i.x), f = 5 * Math.cos(r), c = 5 * Math.sin(r), i.x += f, i.y += c, n.x -= f, n.y -= c), [new DG(kG, [i.x, i.y]), new DG(kG, [n.x, n.y])]);
            var u = [new DG(MG, [i.x, i.y]), new DG(kG, [n.x, n.y])];
            return u._linkTerminalPoint = !1, u
          }(S, s, h, n, e, t[um](WY[fx]))
        }
      }(this, this[Ki], s, h, r, a);
      b && (t._hB = b)
    },
    _24: function () {
      if (!this.data[Hd]()) return null;
      var t = this.data[Vd](!0);
      if (!t || !t[uO](this.graph) || !t._iF) return null;
      var i = t[_O](this);
      return t[lO](this.$data) || (i = -i), i
    },
    checkBundleLabel: function () {
      var t = this[dO]();
      t ? (this.bundleLabel || this.createBundleLabel(), this[HT]._jC = !0, this[HT].data = t) : this[HT] && (this.bundleLabel._jC = !1, this.bundleLabel.data = null)
    },
    createBundleLabel: function () {
      var t = new iW;
      t[vO] = !1, this[HT] = t, this[Bw](this[HT]), zY[dm](this)
    },
    getBundleLabel: function () {
      return this.graph[dO](this[Ki])
    },
    doValidate: function () {
      return this._1J && (this._1J = !1, this[bO]()), this[yO](), bN(this, eW, Ny)
    },
    _4H: function () {
      this._1J = !0, this[fm]()
    },
    _$z: function (t, i, n) {
      var e = this._d1.onBindingPropertyChange(this, t, i, n);
      return e = UY.onBindingPropertyChange(this, t, i, n) || e, this[HT] && this[HT][Nu] && (e = zY[_m](this, t, i, n) || e), ZY[_m](this, t, i, n) || e
    }
  }, dN(eW, QY), eW[gO] = function (t, i, n, e) {
    if (t[Ia](i.x, i.y), e && e != OF.EDGE_TYPE_DEFAULT) {
      if (e == OF[Qw]) t[ja](i.x, n.y);
      else if (e == OF[nO]) t[ja](n.x, i.y);
      else if (0 == e[b](OF[EO])) {
        r = e == OF[Zw] || e != OF.EDGE_TYPE_ORTHOGONAL_VERTICAL && Math.abs(i.x - n.x) > Math.abs(i.y - n.y);
        var s = (i.x + n.x) / 2,
          h = (i.y + n.y) / 2;
        r ? (t[ja](s, i.y), t.lineTo(s, n.y)) : (t[ja](i.x, h), t[ja](n.x, h))
      } else if (0 == e[b](OF[rO])) {
        var r, a = hW[WY.EDGE_EXTEND] || 0;
        (r = e == OF[Xw] || e != OF.EDGE_TYPE_ELBOW_VERTICAL && Math.abs(i.x - n.x) > Math.abs(i.y - n.y)) ? (t[ja](i.x + a, i.y), t[ja](n.x - a, n.y)) : (t[ja](i.x, i.y + a), t.lineTo(n.x, n.y - a))
      } else if (0 == e[b](xO))
        if (a = hW[WY[vx]] || 0, e == OF[qw]) {
          var o = Math.min(i.y, n.y) - a;
          t[ja](i.x, o), t[ja](n.x, o)
        } else if (e == OF.EDGE_TYPE_EXTEND_BOTTOM) o = Math.max(i.y, n.y) + a, t[ja](i.x, o), t.lineTo(n.x, o);
      else if (e == OF.EDGE_TYPE_EXTEND_LEFT) {
        var f = Math.min(i.x, n.x) - a;
        t.lineTo(f, i.y), t[ja](f, n.y)
      } else e == OF.EDGE_TYPE_EXTEND_RIGHT && (f = Math.max(i.x, n.x) + a, t[ja](f, i.y), t.lineTo(f, n.y));
      else if (e == OF[jw]) {
        s = (i.x + n.x) / 2, h = (i.y + n.y) / 2;
        var c = i.x - n.x,
          u = i.y - n.y,
          _ = Math[Gt](c * c + u * u),
          l = Math[Pt](u, c);
        l += Math.PI / 6, 30 < (_ *= .04) && (_ = 30);
        var d = Math.cos(l) * _,
          v = Math.sin(l) * _;
        t[ja](s - v, h + d), t[ja](s + v, h - d)
      }
      t[ja](n.x, n.y)
    } else t.lineTo(n.x, n.y)
  }, qN(eW.prototype, {
    length: {
      get: function () {
        return this.path ? this.path[N] : 0
      }
    }
  }), eW[_][Dr] = function (t, i, n) {
    var e = FG(this[Gd], t, i, this[Ki][pO], n);
    if (!e) return !1;
    var s = e[Ob];
    if (2 < s.length) {
      var h = this[Ki],
        r = s[s[N] - 1];
      r[Oi] == kG ? h[TO] = s[m](1, s[N] - 2) : (e[mO] && (r[bf] = !0), h[TO] = s[m](1, s.length - 1))
    }
  }, sW.prototype = {
    _2U: null,
    image: null,
    initialize: function () {
      bN(this, sW, Dy), this[wO](), jY.initBindingProperties(this)
    },
    _d3: function () {
      this.data.image ? this[Uo] && (this[yo] = this[Uo]) : this.label && (this[yo] = this[t_])
    },
    _oAL: function () {
      this[Uo] = new tW, this[Bw](this[Uo], 0), this._d3()
    },
    doValidate: function () {
      this.body && (this instanceof EW && !this[Nu].groupImage && this._5X() ? this.body[uu] = !1 : (this[yo][uu] = null != this._2U, this[yo].anchorPosition = this._2U));
      var t = this[Nu].$location,
        i = 0,
        n = 0;
      t && (i = t.x, n = t.y);
      var e = this.$x != i || this.$y != n;
      return e && (this.$invalidateBounds = !0), this.$x = i, this.$y = n, QY[_][Ny][p](this) || e
    },
    _$z: function (t, i, n) {
      var e = this._d1[_m](this, t, i, n);
      return e = UY[_m](this, t, i, n) || e, jY[_m](this, t, i, n) || e
    },
    getLinkablePorts: function () {
      return this[Ki][OO]
    },
    getLinkableBounds: function () {
      return this[AO]
    },
    getDefaultPortPoint: function (t) {
      return OB(EB[ui], t || this[Hw]())
    },
    getPortPoint: function (t, i) {
      return t ? ((i = i || this[Hw]()).original ? (n = OB(t, i[IO]), i.rotate && (n = IF(n.x, n.y, i.rotate, i[SO] || 0, i[MO] || 0)), n.x += i.tx || 0, n.y += i.ty || 0) : n = OB(t, i), n.port = t, n) : this[kO](i);
      var n
    },
    getPortPoints: function () {
      var t = this[CO]();
      if (t && Array.isArray(t)) {
        var i = [],
          n = this[Hw]();
        return t.forEach(function (t) {
          i[M](this[$w](t, n))
        } [Ye](this)), i
      }
    }
  }, dN(sW, QY);
  var hW = {};

  function rW(t, i, n, e, s) {
    var h, r, a, o, f = (h = i, r = n, a = e, o = s, Math.max(r, o) - Math.min(h, a) - (r - h + o - a)),
      c = i + n < e + s;
    if (0 < f) {
      if (1 == t) return f + (s - e) / 2;
      if (0 <= t && t < 1) return f;
      if (t < 0) return c ? e - i : n - s
    }
    return c && 0 < t || !c && t < 0 ? Math.abs(n - s) : Math.abs(i - e)
  }

  function aW(t, i, n, e) {
    return t == 0 < i ? n + e + Math.abs(i) : n - Math.abs(i)
  }

  function oW(t, i, n) {
    return i >= t.x && i <= t[Bt] && n >= t.y && n <= t.bottom
  }

  function fW(t, i) {
    var n, e;
    i && i[Yt] && i[Wt] ? (n = i[Yt], e = i[Wt]) : n = e = isNaN(i) ? sB[ta] : i;
    var s = IY[Sb](t, -n, -e / 2, n, e);
    return s || ((s = new NG)[Ia](-n, -e / 2), s.lineTo(0, 0), s[ja](-n, e / 2)), s
  }

  function cW(t, i) {
    var n = Math.sin(i),
      e = Math.cos(i),
      s = t.x,
      h = t.y;
    return t.x = s * e - h * n, t.y = s * n + h * e, t
  }

  function uW(t, i, n, e, s, h) {
    var r = Math[Pt](e - i, n - t),
      a = new fB(s, h);
    return a[kt] = r, cW(a, r), a.x += t, a.y += i, a
  }

  function _W(t, i, n) {
    if (uN(t, new DG(MG, [i.x, i.y]), 0), n) {
      if (1 < t[N]) {
        var e = t[t[N] - 1];
        if (CG == e[Oi] && (e[bf] || e[Ns][2] === k || null === e[Ns][2])) return e.points[2] = n.x, e[Ns][3] = n.y, void(e[bf] = !0);
        if (LG == e[Oi] && (e[bf] || e[Ns][4] === k || null === e[Ns][4])) return e[Ns][4] = n.x, e[Ns][5] = n.y, void(e.invalidTerminal = !0)
      }
      t.push(new DG(kG, [n.x, n.y]))
    }
  }

  function lW(t, i, n, e, s, h) {
    if (s === k) {
      var r = Math.atan2(n.y - e.y, n.x - e.x);
      s = Math.cos(r), h = Math.sin(r)
    }
    for (n = {
        x: n.x,
        y: n.y
      }, i.contains(n.x, n.y) || (n = _B(i, e.x, e.y, n.x, n.y));;) {
      if (!i[Fn](n.x, n.y)) return e;
      if (t.hitTest(n.x - s, n.y - h, sB[LO])) {
        e.x = n.x - s / 2, e.y = n.y - h / 2;
        break
      }
      n.x -= s, n.y -= h
    }
    return e
  }

  function dW(t, i, n, e, s, h) {
    return i.contains(n.x, n.y) ? !1 === h ? vW(t, i, n, e, s) : vW(t, i, {
      x: n.x,
      y: n.y,
      perX: e,
      perY: s
    }, e, s) || vW(t, i, n, -e, -s) : (n = function t(i, n, e, s, h, r) {
      var a, o, f = n < i.x,
        c = n > i.right,
        u = e < i.y,
        _ = e > i.bottom;
      return f && 0 < s && (a = e + (i.x - n) * h / s) >= i.y && a <= i[Ft] ? {
        x: i.x,
        y: a,
        perX: s,
        perY: h
      } : c && s < 0 && (a = e + (i[Bt] - n) * h / s) >= i.y && a <= i[Ft] ? {
        x: i[Bt],
        y: a,
        perX: s,
        perY: h
      } : u && 0 < h && (o = n + (i.y - e) * s / h) >= i.x && o <= i.right ? {
        x: o,
        y: i.y,
        perX: s,
        perY: h
      } : _ && h < 0 && (o = n + (i[Ft] - e) * s / h) >= i.x && o <= i[Bt] ? {
        x: o,
        y: i[Ft],
        perX: s,
        perY: h
      } : !1 !== r ? t(i, n, e, -s, -h, !1) : void 0
    }(i, n.x, n.y, e, s, h)) ? vW(t, i, n, n.perX, n[RO]) : void 0
  }

  function vW(t, i, n, e, s) {
    for (;;) {
      if (!i[Fn](n.x, n.y)) return;
      if (t[Wo](n.x + e, n.y + s)) break;
      n.x += e, n.y += s
    }
    return n
  }

  function bW(t) {
    return gG(t) ? t : t[PO](/.(gif|jpg|jpeg|png)$/gi) || /^data:image\/(\w+\+?\w+);base64,/i [S](t) ? t : (t = tB(t)) instanceof Object && t[no] ? t : void 0
  }

  function yW(t, i) {
    this._$x = new NB, this._$x.on(function (t) {
      zb == t[Ti] && this[qd]()
    }, this), this._1I = new NB, this._1I[Xi](function (t) {
      !this[zb] || t[Ti] != BB.KIND_CLEAR && t[Ti] != BB[vn] || this[vv][Fn](this[zb]) || (this[zb] = null)
    }, this), this._$b = new NB, this._16 = new NB, this._$p = new NB, this._$r = new NB, this.graphModel = i || new RY, this._9A = new J$(this, t), this._3A = new hU(this), this._1C = new NB, this._onresize = JB(u, YO, function (t) {
      this[WO]()
    }, !1, this), this._9A[od].ondrop = function (t) {
      this[UO](t)
    } [Ye](this), this._9A._oAX[HO] = function (t) {
      this[HO](t)
    } [Ye](this)
  }

  function gW(t) {
    for (var i = t.parent; i;) {
      if (i.enableSubNetwork) return i;
      i = i[Pi]
    }
    return null
  }

  function EW(t, i) {
    vN(this, EW, arguments)
  }
  hW[WY.SELECTION_COLOR] = sB[Qr], hW[WY.SELECTION_BORDER] = sB.SELECTION_BORDER, hW[WY.SELECTION_SHADOW_BLUR] = sB[Vy], hW[WY[Zr]] = OF[zr], hW[WY[lp]] = 2, hW[WY.SELECTION_SHADOW_OFFSET_Y] = 2, hW[WY[Vm]] = sB[Vm], hW[WY[Ug]] = EB[vi], hW[WY[DO]] = EB[di], hW[WY.LABEL_PADDING] = new gB(0, 2), hW[WY[nE]] = 8, hW[WY[NO]] = 8, hW[WY[sE]] = !0, hW[WY[gp]] = 0, hW[WY[gE]] = Pm, hW[WY[TE]] = !0, hW[WY[xE]] = null, hW[WY.LABEL_BACKGROUND_GRADIENT] = null, hW[WY[qE]] = BO, hW[WY[JE]] = 1.5, hW[WY[Sx]] = !0, hW[WY[kx]] = !0, hW[WY.GROUP_BACKGROUND_COLOR] = JN(3438210798), hW[WY[DE]] = 1, hW[WY[BE]] = Pm, hW[WY.ARROW_TO] = !0, hW[WY[gT]] = sB[ta], hW[WY[Kx]] = sB[ta], hW[WY[lx]] = 10, hW[WY.EDGE_CORNER_RADIUS] = 8, hW[WY[wx]] = OF[fO], hW[WY[Ex]] = !0, hW[WY[vx]] = 20, hW[WY.EDGE_SPLIT_PERCENT] = .5, hW[WY[Tx]] = 20, hW[WY[ux]] = 20, hW[WY[$E]] = EB.CENTER_BOTTOM, hW[WY[VT]] = EB.CENTER_TOP, hW[WY[YE]] = FO, hW[WY[qT]] = 1, hW[WY[Yp]] = GO, hW[WY[$O]] = sB[Tf], hW[WY.ALPHA] = 1, sB[LO] = 2, qN(yW.prototype = {
    originAtCenter: !0,
    editable: !1,
    ondragover: function (t) {
      wF.stopEvent(t)
    },
    getDropInfo: function (t, i) {
      var n = null;
      if (i) try {
        n = JSON.parse(i)
      } catch (t) {}
      return n
    },
    ondrop: function (t) {
      var i = t.dataTransfer;
      if (i) {
        var n = i[Os](VO),
          e = this.getDropInfo(t, n);
        e || ((e = {}).image = i[Os](Uo), e[Oi] = i[Os](Oi), e[t_] = i.getData(t_), e[ay] = i.getData(ay));
        var s = this[jO](t);
        if (s = this[bd](s.x, s.y), !(this[XO] instanceof Function && !1 === this.dropAction.call(this, t, s, e)) && (e[Uo] || e[t_] || e.type)) {
          var h, r = e[Uo],
            a = e[Oi],
            o = e[t_],
            f = e.groupImage;
          if (wF.stopEvent(t), a && ZO != a ? fy == a ? h = this.createText(o, s.x, s.y) : Ab == a ? h = this[zO](o, s.x, s.y) : KO == a ? (h = this[JO](o, s.x, s.y), (f = f && bW(f)) && (h.groupImage = f)) : (a = tB(a)) instanceof Function && a.prototype instanceof wY && ((h = new a)[P_] = o, h[Z_] = new fB(s.x, s.y), this[QO].add(h)) : h = this.createNode(o, s.x, s.y), h) {
            if ((r = r && bW(r)) && (h[Uo] = r), t.shiftKey) {
              var c = this.getElementByMouseEvent(t);
              c && this[qO](c) && (h.parent = c)
            }
            if (e[tA])
              for (var u in e.properties) h[u] = e[tA][u];
            if (e[iA])
              for (var u in e[iA]) h.set(u, e[iA][u]);
            if (e.styles && h.putStyles(e[nA]), !1 === this.onElementCreated(h, t, e)) return !1;
            var _ = new sU(this, sU[eA], t, h);
            return this[sA](_), h
          }
        }
      }
    },
    _oB9: function (t) {
      return t[ov] || t instanceof PY || t[hA]
    },
    enableDoubleClickToOverview: !0,
    _9A: null,
    _$x: null,
    _1I: null,
    _$b: null,
    _$r: null,
    _16: null,
    _$p: null,
    _1W: function (t) {
      return this._$x[Ui](t)
    },
    _55: function (t) {
      this._$x[O](t), Dl == t.kind && this[rA]()
    },
    isVisible: function (t) {
      return this._9A._fC(t)
    },
    isMovable: function (t) {
      return (t instanceof wY || t instanceof xY && t[Qv]()) && !1 !== t[aA]
    },
    isSelectable: function (t) {
      return !1 !== t[oA]
    },
    isEditable: function (t) {
      return !1 !== t.editable
    },
    isRotatable: function (t) {
      return !1 !== t.rotatable
    },
    isResizable: function (t) {
      return !1 !== t[fA]
    },
    canLinkFrom: function (t) {
      return !1 !== t[cA] && !1 !== t.canLinkFrom
    },
    canLinkTo: function (t, i) {
      return !(!1 === t.linkable || !1 === t[uA] || i instanceof wF[KO] && t[Pv](i) || t instanceof wF[KO] && i[Pv](t))
    },
    isEndPointEditable: function (t, i) {
      return !1 !== t[_A]
    },
    createNode: function (t, i, n) {
      var e = new wY(t, i, n);
      return this[QO].add(e), e
    },
    createText: function (t, i, n) {
      var e = new DY(t, i, n);
      return this[QO].add(e), e
    },
    createShapeNode: function (t, i, n, e) {
      WN(i) && (e = n, n = i, i = null);
      var s = new AY(t, i);
      return s[ab] = new fB(n, e), this[QO].add(s), s
    },
    createGroup: function (t, i, n) {
      var e = new PY(t, i, n);
      return this[QO].add(e), e
    },
    createEdge: function (t, i, n) {
      if (t instanceof wY) {
        var e = n;
        n = i, i = t, t = e
      }
      var s = new xY(i, n);
      return t && (s.$name = t), this[QO].add(s), s
    },
    addElement: function (t, i) {
      this[QO].add(t), i && t[T]() && t[Gv](function (t) {
        this[lA](t, i)
      }, this)
    },
    removeElement: function (t) {
      this[QO].remove(t)
    },
    clear: function () {
      this[QO][St]()
    },
    getStyle: function (t, i) {
      var n = t._kD[i];
      return n !== k ? n : this[dA](i)
    },
    getDefaultStyle: function (t) {
      if (this._kD) {
        var i = this._kD[t];
        if (i !== k) return i
      }
      return hW[t]
    },
    _39: function (t, i) {
      if (!this[vA] || this[vA][Fn](this[Ov])) return i && i(), !1;
      t = this._2K(), this[bA]();
      var n, e, s, h = this[Ov],
        r = this.limitedBounds,
        a = h[Yt] / this.limitedBounds.width,
        o = h[Wt] / this.limitedBounds[Wt];
      if (a <= 1 && o <= 1) return n = r[Kt] > h[Kt] ? r.left : r[Bt] < h.right ? h.left - (h[Bt] - r[Bt]) : h[Kt], e = r.top > h.top ? r.top : r.bottom < h[Ft] ? h.top - (h[Ft] - r[Ft]) : h.top, void this[Qd](-n * this[Wa], -e * this[Wa], this.scale, !1, i);
      var f = o < a;
      s = Math.max(a, o), f ? (n = r.x, (e = r.y + (h.top - r.top) * (1 - s) / s) >= r.y ? e = r.y : e < r[Ft] - h.height / s && (e = r.bottom - h[Wt] / s)) : (e = r.y, (n = r.x + (h[Kt] - r.left) * (1 - s) / s) >= r.x ? n = r.x : n < r[Bt] - h[Yt] / s && (n = r[Bt] - h.width / s)), n *= s *= this[Wa], e *= s, this.translateTo(-n, -e, s, t, i)
    },
    checkLimitedBounds: function (t) {
      if (this[yA] || !this[vA] || this[vA][Fn](this[Ov])) return !1;
      this[yA] = !0, this[gA](function () {
        this._39(t, function () {
          this._oBheckingBounds = !1
        } [Ye](this))
      }, this)
    },
    zoomByMouseEvent: function (t, i, n, e) {
      var s = this[jO](t);
      return Y == typeof i ? this[EA](Math.pow(1.1, i), s.x, s.y, n, e) : i ? this[xA](s.x, s.y, n, e) : this[pA](s.x, s.y, n, e)
    },
    resetScale: 1,
    translate: function (t, i, n) {
      return this[Qd](this.tx + t, this.ty + i, this.scale, n)
    },
    translateTo: function (t, i, n, e, s) {
      if (n = n && Math.min(this[Yo], Math.max(this[TA], n)), !e) {
        var h = this._9A._oB1(t, i, n);
        return s && s(), h
      }
      this._6G()._mG(t, i, n, e, s)
    },
    centerTo: function (t, i, n, e, s) {
      return (!n || n <= 0) && (n = this[Wa]), e === k && (e = this._2K()), this[Qd](this[Yt] / 2 - t * n, this[Wt] / 2 - i * n, n, e, s)
    },
    moveToCenter: function (t, i) {
      if (!1 !== arguments[2] && this._9A[mA]()) return this._9A._oAH || (i = !1), this[gA](this[wA][Ye](this, t, i, !1));
      var n = this[oo];
      this[OA](n.cx, n.cy, t, i)
    },
    zoomToOverview: function (t, i) {
      if (!1 !== arguments[2] && this._9A[mA]()) return this._9A._oAH || (t = !1), this[gA](this.zoomToOverview[Ye](this, t, i, !1));
      var n = this._9A._1S();
      n && (i && (n.scale = Math.min(n[Wa], i)), this[OA](n.cx, n.cy, n[Wa], t))
    },
    _2K: function () {
      return !!this._9A[ke] && (this[AA] === k || null === this[AA] ? sB[IA] : this[AA])
    },
    zoomAt: function (t, i, n, e, s) {
      e === k && (e = this._2K()), i === k && (i = this[Yt] / 2), i = i || 0, n === k && (n = this[Wt] / 2), n = n || 0;
      var h = this.scale;
      return i = (t = Math.min(this.maxScale, Math.max(this[TA], h * t))) * (this.tx - i) / h + i, n = t * (this.ty - n) / h + n, this.translateTo(i, n, t, e, s)
    },
    zoomOut: function (t, i, n, e) {
      return this[EA](1 / this.scaleStep, t, i, n, e)
    },
    zoomIn: function (t, i, n, e) {
      return this[EA](this[SA], t, i, n, e)
    },
    _6G: function () {
      return this[MA] || (this[MA] = new SW(this)), this[MA]
    },
    onAnimationStart: function () {},
    onAnimationEnd: function () {},
    isAnimating: function () {
      return this[MA] && this[MA]._f4()
    },
    enableInertia: !0,
    _o9S: function (t, i) {
      return this._6G()._i8(t || 0, i || 0)
    },
    stopAnimation: function () {
      this[MA] && this[MA]._n3()
    },
    getUI: function (t) {
      return iB(t) ? this._9A._41(t) : this._9A._lY(t)
    },
    getUIByMouseEvent: function (t) {
      return this._9A._41(t)
    },
    hitTest: function (t) {
      return this._9A[Wo](t)
    },
    globalToLocal: function (t) {
      return this._9A._8G(t)
    },
    toCanvas: function (t, i) {
      return this._9A._i0(t, i)
    },
    toLogical: function (t, i) {
      return iB(t) ? this._9A._$h(t) : this._9A._fN(t, i)
    },
    getElementByMouseEvent: function (t) {
      var i = this._9A._41(t);
      if (i) return i[Nu]
    },
    getElement: function (t) {
      return iB(t) ? this.getElementByMouseEvent(t) : this._lWModel[It](t)
    },
    invalidate: function () {
      this._9A._d7()
    },
    invalidateUI: function (t) {
      t[Rl](), this.invalidate()
    },
    invalidateElement: function (t) {
      this._9A._45(t)
    },
    getUIBounds: function (t) {
      return this._9A._2Z(t)
    },
    forEachVisibleUI: function (t, i) {
      return this._9A._4U(t, i)
    },
    forEachReverseVisibleUI: function (t, i) {
      return this._9A._10(t, i)
    },
    forEachUI: function (t, i) {
      return this._9A._fD(t, i)
    },
    forEachReverseUI: function (t, i) {
      return this._9A._4V(t, i)
    },
    forEach: function (t, i) {
      return this[QO].forEach(t, i)
    },
    getElementByName: function (i) {
      var n;
      return this[Mt](function (t) {
        if (t[P_] == i) return n = t, !1
      }), n
    },
    focus: function (t) {
      if (t) {
        var i = u[kA] || u[CA],
          n = u.scrollY || u.pageYOffset;
        return this[LA].focus(), void u.scrollTo(i, n)
      }
      this[LA].focus()
    },
    callLater: function (t, i, n) {
      this._9A._e7(t, i, n)
    },
    exportImage: function (t, i, n) {
      return function (t, i, n, e) {
        var s = t.bounds;
        n = n || s, i = i || 1;
        var h = PF();
        t$(h.g), h[Yt] = n[Yt] * i, h[Wt] = n[Wt] * i, t._9A._hY(h.g, i, n);
        var r = null;
        try {
          r = h[RA](e || PA)
        } catch (t) {
          wF[Xo](t)
        }
        return {
          canvas: h,
          data: r,
          width: h.width,
          height: h[Wt]
        }
      }(this, t, i, n)
    },
    setSelection: function (t) {
      return this._lWModel[pn].set(t)
    },
    select: function (t) {
      return this._lWModel._selectionModel.select(t)
    },
    unselect: function (t) {
      return this[QO]._selectionModel[DA](t)
    },
    reverseSelect: function (t) {
      return this._lWModel._selectionModel[NA](t)
    },
    selectAll: function () {
      var i, t, n;
      t = (i = this)[Rn], n = [], i.graphModel[Mt](function (t) {
        i.isVisible(t) && i.isSelectable(t) && n[M](t)
      }), t.set(n)
    },
    unSelectAll: function () {
      this[Rn][St]()
    },
    unselectAll: function () {
      this.unSelectAll()
    },
    isSelected: function (t) {
      return this._lWModel[pn][Fn](t)
    },
    sendToTop: function (t) {
      if (function (t, i) {
          if (i instanceof xY) i.isInvalid() || function (t, i) {
            var n = i[Wd];
            if (i[Ud]()) gY(t, n);
            else {
              var e = i[gv];
              gY(t, n), gY(t, e)
            }
          }(t, i);
          else
            for (gY(t, i); i = i[Pi];) gY(t, i)
        }(this[QO], t), t instanceof xY) {
        var i = this.getUI(t);
        if (i) {
          var n = this._9A._o0;
          n[An](i, n[N] - 1)
        }
      }
    },
    sendToBottom: function (t) {
      ! function (t, i) {
        if (i instanceof xY) i[Rv]() || function (t, i) {
          var n = i[Wd];
          if (i[Ud]()) EY(t, n);
          else {
            var e = i[gv];
            EY(t, n), EY(t, e)
          }
        }(t, i);
        else
          for (EY(t, i); i = i[Pi];) EY(t, i)
      }(this[QO], t)
    },
    moveElements: function (t, i, n) {
      var e = [],
        s = new hB;
      return aN(t, function (t) {
        t instanceof wY ? e.push(t) : t instanceof xY && s.add(t)
      }), this._fS(e, i, n, s)
    },
    _fS: function (t, n, e, i) {
      if (0 == n && 0 == e || 0 == t.length && 0 == i[N]) return !1;
      if (0 != t[N]) {
        var s = this._57(t);
        i = this._56(s, i), aN(s, function (t) {
          var i = t.$location;
          i ? t[BA](i.x + n, i.y + e) : t[BA](n, e)
        })
      }
      return i && i.length && this._fU(i, n, e), !0
    },
    _fU: function (t, i, n) {
      t[Mt](function (t) {
        t[Js](i, n)
      })
    },
    _56: function (i, n) {
      return this[vv][Mt](function (t) {
        t instanceof xY && this[FA](t) && i[Fn](t.fromAgent) && i[Fn](t[gv]) && n.add(t)
      }, this), n
    },
    _57: function (t) {
      var i = new hB;
      return aN(t, function (t) {
        this[FA](t), i.add(t),
          function i(t, n, e) {
            t._jB() && t[T]() && t[y][Mt](function (t) {
              t instanceof wY && n.add(t) && i(t, n, e)
            }, this), t[lb]() && t._eU.forEach(function (t) {
              (null == e || e[ln](t)) && n.add(t) && i(t, n, e)
            })
          }(t, i, this._movableFilter)
      }, this), i
    },
    reverseExpanded: function (t) {
      if (!t[Hd]()) return !1;
      var i = t[Vd](!0);
      return !!i && (!1 !== i.reverseExpanded() ? (this.invalidate(), !0) : void 0)
    },
    _3A: null,
    _1C: null,
    beforeInteractionEvent: function (t) {
      return this._1C[Ui](t)
    },
    onInteractionEvent: function (t) {
      this._1C[O](t)
    },
    addCustomInteraction: function (t) {
      this._3A[GA](t)
    },
    removeCustomInteraction: function (t) {
      this._3A[$A](t)
    },
    enableWheelZoom: !0,
    enableTooltip: !0,
    getTooltip: function (t) {
      return t[Vv] || t[P_]
    },
    updateViewport: function () {
      this._9A._83()
    },
    destroy: function () {
      var t;
      this._55(new MB(this, Rs, !0, this[Xu])), this._iZed = !0, this._onresize && (t = this[YA], u[WA](YO, t)), this._3A[Rs](), this[vv] = new RY;
      var i = this[UA];
      this._9A._iZ(), i && (i[HA] = "")
    },
    onPropertyChange: function (i, n, e) {
      this._$x.addListener(function (t) {
        t[Ti] == i && n.call(e, t)
      })
    },
    removeSelection: function () {
      var t = this[Rn]._kE;
      return !(!t || 0 == t[N]) && (t = t.slice(), this._lWModel[o](t), t)
    },
    removeSelectionByInteraction: function (n) {
      var t = this[Rn][Dn];
      if (!t || 0 == t[N]) return !1;
      wF[Yh](VA + t.length, function () {
        var t = this[jA]();
        if (t) {
          var i = new sU(this, sU[XA], n, t);
          this[sA](i)
        }
      }, this)
    },
    createShapeByInteraction: function (t, i, n, e) {
      var s = new NG(i);
      2 < i[N] && s.closePath();
      var h = this.createShapeNode(ZA, s, n, e);
      this.onElementCreated(h, t);
      var r = new sU(this, sU[eA], t, h);
      return this.onInteractionEvent(r), h
    },
    createLineByInteraction: function (t, i, n, e) {
      var s = new NG(i),
        h = this[zO](zA, s, n, e);
      h[Fv](wF[KA].SHAPE_FILL_COLOR, null), h[Fv](wF.Styles[Xp], null), h[Fv](wF[KA].LAYOUT_BY_PATH, !0), this[JA](h, t);
      var r = new sU(this, sU[eA], t, h);
      return this.onInteractionEvent(r), h
    },
    createEdgeByInteraction: function (t, i, n, e, s, h) {
      var r = this.createEdge(QA, t, i);
      if (s && r[Fv](wF[KA][yT], s), h && r.setStyle(wF[KA].EDGE_TO_PORT, h), e) r._o91 = e;
      else {
        var a = this[qA],
          o = this.edgeType;
        this[tI] && (a = this[tI][fv] || a, o = this[tI].edgeType || o), a && (r.uiClass = a), o && (r[sb] = o)
      }
      this.onElementCreated(r, n);
      var f = new sU(this, sU.ELEMENT_CREATED, n, r);
      return this[sA](f), r
    },
    onElementCreated: function (t, i, n) {
      !t[Pi] && this[zb] && (t[Pi] = this[zb])
    },
    allowEmptyLabel: !1,
    startLabelEdit: function (i, n, t, e) {
      var s = this;
      t[iI](e.x, e.y, n[Ki], this[um](i, WY[Zg]), function (t) {
        return s[nI](i, n, t, n.parent)
      })
    },
    onLabelEdit: function (t, i, n, e) {
      if (!n && !this.allowEmptyLabel) return wF[eI](sI), !1;
      if (t_ == i[P_]) {
        if (t.name == n) return !1;
        t.name = n
      } else !1 === e._gZ(i, n) && (i[Ki] = n, this[hI](t))
    },
    setInteractionMode: function (t, i) {
      this[rI] = t, this.interactionProperties = i
    },
    upSubNetwork: function () {
      return !!this._3L && (this.currentSubNetwork = gW(this._3L))
    },
    _$s: !1,
    invalidateVisibility: function () {
      this._$s = !0, this[Rl]()
    },
    getBundleLabel: function (t) {
      var i = t[Vd](!0);
      return i && i[aI] == t ? oI + i[fI].length : null
    },
    zoomAnimation: null,
    pauseRendering: function (t, i) {
      (this[cI] || i) && this._9A._7P(t)
    },
    _58: k,
    enableRectangleSelectionByRightButton: !0,
    getLinkablePoints: function (t, i, n) {
      return t.linkablePoints
    }
  }, {
    center: {
      get: function () {
        return this[bd](this[UA][Qn] / 2, this[UA].clientHeight / 2)
      }
    },
    visibleFilter: {
      get: function () {
        return this._jCFilter
      },
      set: function (t) {
        this[Yd] = t, this.invalidateVisibility()
      }
    },
    topCanvas: {
      get: function () {
        return this._9A[Bd]
      }
    },
    propertyChangeDispatcher: {
      get: function () {
        return this._$x
      }
    },
    listChangeDispatcher: {
      get: function () {
        return this._1I
      }
    },
    dataPropertyChangeDispatcher: {
      get: function () {
        return this._$b
      }
    },
    selectionChangeDispatcher: {
      get: function () {
        return this._$r
      }
    },
    parentChangeDispatcher: {
      get: function () {
        return this._16
      }
    },
    childIndexChangeDispatcher: {
      get: function () {
        return this._$p
      }
    },
    interactionDispatcher: {
      get: function () {
        return this._1C
      }
    },
    cursor: {
      set: function (t) {
        this.canvasPanel[Yn][uI] = t || this._3A[_I]
      },
      get: function () {
        return this[LA].style[uI]
      }
    },
    interactionMode: {
      get: function () {
        return this._3A._oBurrentMode
      },
      set: function (t) {
        var i = this[rI];
        i != t && (this._3A.currentMode = t, this._55(new MB(this, rI, t, i)))
      }
    },
    scaleStep: {
      get: function () {
        return this._9A._fH
      },
      set: function (t) {
        this._9A._fH = t
      }
    },
    maxScale: {
      get: function () {
        return this._9A._hJ
      },
      set: function (t) {
        this._9A._hJ = t
      }
    },
    minScale: {
      get: function () {
        return this._9A._hL
      },
      set: function (t) {
        this._9A._hL = t
      }
    },
    scale: {
      get: function () {
        return this._9A[je]
      },
      set: function (t) {
        return this._9A._scale = t
      }
    },
    tx: {
      get: function () {
        return this._9A._tx
      }
    },
    ty: {
      get: function () {
        return this._9A._ty
      }
    },
    styles: {
      get: function () {
        return this._kD
      },
      set: function (t) {
        this._kD = t
      }
    },
    selectionModel: {
      get: function () {
        return this[QO][pn]
      }
    },
    graphModel: {
      get: function () {
        return this[QO]
      },
      set: function (t) {
        if (this[QO] == t) return !1;
        var i = this[QO],
          n = new MB(this, vv, i, t);
        if (!1 === this._1W(n)) return !1;
        null != i && (i[lI][Zi](this._$x, this), i.listChangeDispatcher[Zi](this._1I, this), i.dataChangeDispatcher[Zi](this._$b, this), i.parentChangeDispatcher.removeListener(this._16, this), i.childIndexChangeDispatcher.removeListener(this._$p, this), i.selectionChangeDispatcher.removeListener(this._$r, this)), this._lWModel = t, this[QO] && (this[QO].propertyChangeDispatcher[Xi](this._$x, this), this[QO][En].addListener(this._1I, this), this[QO][Tn][Xi](this._$b, this), this[QO].parentChangeDispatcher.addListener(this._16, this), this[QO][wn][Xi](this._$p, this), this[QO][xn].addListener(this._$r, this)), this._9A && this._9A._mF(), this._55(n)
      }
    },
    count: {
      get: function () {
        return this[QO][N]
      }
    },
    width: {
      get: function () {
        return this[UA].clientWidth
      }
    },
    height: {
      get: function () {
        return this.html[wd]
      }
    },
    viewportBounds: {
      get: function () {
        return this._9A[dI]
      }
    },
    bounds: {
      get: function () {
        return this._9A._4W()
      }
    },
    canvasPanel: {
      get: function () {
        return this._9A[od]
      }
    },
    html: {
      get: function () {
        return this._9A[od][co]
      }
    },
    navigationType: {
      get: function () {
        return this._9A._80
      },
      set: function (t) {
        this._9A._47(t)
      }
    },
    _3L: {
      get: function () {
        return this[QO]._3L
      }
    },
    currentSubNetwork: {
      get: function () {
        return this._lWModel.currentSubNetwork
      },
      set: function (t) {
        this[QO].currentSubNetwork = t
      }
    },
    limitedBounds: {
      get: function () {
        return this._limitedBounds
      },
      set: function (t) {
        if (yB[Qt](t, this[vI])) return !1;
        this[vI] = t ? new yB(t) : null
      }
    },
    ratio: {
      get: function () {
        return this._9A[ea]
      }
    },
    delayedRendering: {
      get: function () {
        return this._58 === k ? sB[bI] : this._58
      },
      set: function (t) {
        t != this[cI] && (this._58 = t, this[yI](!1, !0))
      }
    },
    fullRefresh: {
      get: function () {
        return this._9A.fullRefresh
      },
      set: function (t) {
        this._9A[Fl] = t
      }
    },
    enableCrossLine: {
      get: function () {
        return null != this._9A._dU
      },
      set: function (t) {
        t != this[gI] && (this._9A[gI](t), this[Rl]())
      }
    }
  }), sB.DELAYED_RENDERING = !0, sB[EI] = 60, sB[xI] = 60, EW.prototype = {
    _d3: function () {
      if (!this._5X()) return bN(this, EW, $p, arguments)
    },
    initialize: function () {
      bN(this, EW, Dy), this[iT]()
    },
    _oAN: function () {
      this._mT = new NG, this[sT] = new tW(this._mT), this[sT][Du] = !1, this[Bw](this.shape, 0), this[yo] = this[sT]
    },
    checkBody: function () {
      if (this._5X()) return this._27 = !0, this[sT] ? (this[sT][rd] = !0, this.body = this[sT]) : (this[pI](), XY[dm](this)), void(this.image && (this[Uo][rd] = !1));
      this[Uo] ? (this[Uo].visible = !0, this[yo] = this[Uo]) : this._oAL(), this[sT] && (this[sT][rd] = !1)
    },
    _5X: function () {
      return this[Nu]._jB() && this[Nu][cv]
    },
    _mT: null,
    _27: !0,
    _5Y: function () {
      this._1L = !0, this._27 = !0
    },
    doValidate: function () {
      if (this._27 && this._5X()) {
        if (this._27 = !1, this.shape[uv](), this.$data[ay]) {
          this.shape[Ki] = this[Nu][ay];
          var t = this._28();
          return this[sT].offsetX = t.x + t[Yt] / 2, this.shape.offsetY = t.y + t.height / 2, this[sT][Pl] = {
            width: t.width,
            height: t[Wt]
          }, sW[_].doValidate.call(this)
        }
        this.shape[py] = 0, this[sT][xy] = 0;
        var i = this._8S(this.$data[hy]);
        if (this._mT[St](), i instanceof yB) {
          var n = this[um](WY[rT]) || 0;
          SY(this._mT, i.x, i.y, i[Yt], i[Wt], i.rx || n, i.ry || n)
        } else i instanceof ZF ? (e = this._mT, s = i.r || 1, h = i.cx || 0, r = i.cy || 0, a = s * Math.tan(Math.PI / 8), o = s * Math.sin(Math.PI / 4), e[Ia](h + s, r), e[mb](h + s, r + a, h + o, r + o), e[mb](h + a, r + s, h, r + s), e[mb](h - a, r + s, h - o, r + o), e[mb](h - s, r + a, h - s, r), e.quadTo(h - s, r - a, h - o, r - o), e[mb](h - a, r - s, h, r - s), e.quadTo(h + a, r - s, h + o, r - o), e[mb](h + s, r - a, h + s, r)) : i instanceof zF && MY(this._mT, i);
        this._mT._6W = !0, this[sT][uv]()
      }
      var e, s, h, r, a, o;
      return sW.prototype.doValidate[p](this)
    },
    _76: function (t, i, n, e, s) {
      switch (Y != typeof e && (e = -i / 2), Y != typeof s && (s = -n / 2), t) {
        case OF.GROUP_TYPE_CIRCLE:
          return new ZF(e + i / 2, s + n / 2, Math.max(i, n) / 2);
        case OF[TI]:
          return new zF(e + i / 2, s + n / 2, i, n);
        default:
          return new yB(e, s, i, n)
      }
    },
    _28: function () {
      return this._8S(null)
    },
    _8S: function (t) {
      var i = this.data,
        n = i[ry],
        e = i[sy],
        s = sB[EI],
        h = sB.GROUP_MIN_HEIGHT;
      if (e && (Y == typeof e[Yt] && (s = e.width), Y == typeof e.height && (h = e[Wt]), E = e.x, x = e.y), !i[T]()) return this._76(t, s, h, E, x);
      var r, a = this.$data._gY._kE;
      t != OF.GROUP_TYPE_CIRCLE && t != OF[TI] || (r = []);
      for (var o, f, c, u, _ = new yB, l = 0, d = a[N]; l < d; l++) {
        var v = a[l];
        if (this[qy][mI](v) && !(v instanceof xY)) {
          var b = this[qy][As](v);
          b && (o = b.$x + b._h0.x, f = b.$y + b._h0.y, c = b._h0[Yt], u = b._h0[Wt], _[Id](o, f, c, u), r && (r.push({
            x: o,
            y: f
          }), r[M]({
            x: o + c,
            y: f
          }), r[M]({
            x: o + c,
            y: f + u
          }), r[M]({
            x: o,
            y: f + u
          })))
        }
      }
      if (_.isEmpty()) return this._76(t, s, h, E, x);
      var y = this.$data.$location;
      y ? y[qb] && (y[qb] = !1, E === k && (y.x = _.cx), x === k && (y.y = _.cy)) : y = this[Nu][ab] = {
        x: _.cx,
        y: _.cy
      }, n && _[Ru](n), Y == typeof E && E + y.x < _.x && (_[Yt] += _.x - (E + y.x), _.x = E + y.x, r && r.push({
        x: _.x,
        y: _.cy
      })), Y == typeof x && x + y.y < _.y && (_[Wt] += _.y - (_.y, x + y.y), _.y = x + y.y, r && r[M]({
        x: _.cx,
        y: _.y
      }));
      var g, E = y.x,
        x = y.y;
      if (t != OF[wI]) return t == OF[TI] ? ((g = function (t, i) {
        for (var n, e = (i = i || function (t) {
            for (var i, n = t[N], e = new yB, s = 0; s < n; s++) i = t[s], e.add(i.x, i.y);
            return e
          }(t)).width / i[Wt], s = [], h = t.length, r = 0; r < h; r++) n = t[r], s[M]({
          x: n.x,
          y: n.y * e
        });
        var a = KF(s);
        if (a) return new zF(a.cx, a.cy / e, 2 * a.r, 2 * a.r / e)
      }(r, _)).cx -= E, g.cy -= x, g[Yt] < s && (g.cx += (s - g[Yt]) / 2, g[Yt] = s), g[Wt] < h && (g.cy += (h - g[Wt]) / 2, g[Wt] = h)) : ((g = _)[Yt] < s && (_[Yt] = s), _[Wt] < h && (_[Wt] = h), _[Fy](-E, -x)), g;
      (g = KF(r)).cx -= E, g.cy -= x;
      var p = Math.max(s, h) / 2;
      return g.r < p && (g.cx += p - g.r, g.cy += p - g.r, g.r = p), g
    },
    _$z: function (t, i, n) {
      if (!this._5X()) return bN(this, EW, OI, arguments);
      var e = this._d1.onBindingPropertyChange(this, t, i, n);
      return e = UY[_m](this, t, i, n) || e, e = jY[_m](this, t, i, n) || e, XY.onBindingPropertyChange(this, t, i, n) || e
    }
  }, dN(EW, sW), wF.GroupUI = EW, sB.NAVIGATION_IMAGE_LEFT = null, sB[AI] = null;
  var xW = {
      position: ml,
      "text-align": We
    },
    pW = {
      padding: II,
      transition: SI
    },
    TW = {
      position: Il,
      display: MI
    };

  function mW(t, i, n, e, s, h, r) {
    var a = x[Gn]($n);
    a[R] = kI, jB(a, xW), i && jB(a, i);
    var o = x[Gn](vo);
    return h && (BN && (o[L] = h), tF || (o[us] = h)), o[P_] = r, o.src = n, jB(o, pW), s && jB(o, s), e && XB(o, ed, CI), a._img = o, a[ee](o), t.appendChild(a), a
  }

  function wW(h, t) {
    if (!sB[LI]) {
      var i = PF(20, 40),
        n = i.g;
      n[Wa](n[ea], n[ea]), n[Ia](16, 4), n[ja](4, 20), n[ja](16, 36), n.lineWidth = 3, n[Df] = or, n[Nf] = or, n.strokeStyle = za, n[Po] = RI, n.shadowBlur = 5, n[Za](), sB[LI] = i[RA]();
      var e = PF(i.height, i[Yt], !1);
      e.g[Ya](e[Yt], 0), e.g[kt](Math.PI / 2), e.g.drawImage(i, 0, 0), sB[AI] = e[RA]()
    }
    this[nl] = h,
      function (t, i) {
        this._navPane = x[Gn]($n), this[PI][R] = DI, jB(this._navPane, {
          "background-color": NI,
          overflow: bo,
          "user-select": ar,
          position: Il
        }), this[BI] = mW(this._navPane, {
          width: Al
        }, sB[AI], !1, null, i, FI), this._left = mW(this._navPane, {
          height: Al
        }, sB.NAVIGATION_IMAGE_LEFT, !1, TW, i, Kt), this._right = mW(this[PI], {
          height: Al,
          right: fl
        }, sB.NAVIGATION_IMAGE_LEFT, !0, TW, i, Bt), this[GI] = mW(this._navPane, {
          width: Al,
          bottom: fl
        }, sB[AI], !0, null, i, Ft), t[ee](this[PI])
      } [p](this, t, function (t) {
        var i, n;
        XN(t);
        var e = t.target,
          s = e[P_];
        if (Kt == s) i = 1;
        else if (Bt == s) i = -1;
        else if (FI == s) n = 1;
        else {
          if (Ft != s) return;
          n = -1
        }
        BN && (e.className = $I, setTimeout(function () {
          e[R] = ""
        }, 100)), XN(t), h._lW[YI](i, n)
      }), this._3O(t[Qn], t.clientHeight)
  }

  function OW(t, i) {
    this[nl] = t, this.init(i, t)
  }

  function AW(t, i) {
    vN(this, AW, arguments)
  }

  function IW(t, i) {
    var n, e;
    this[nl] = t, this._k6 = (n = i, t$((e = PF(!0)).g), e[qI] = function () {
      return !1
    }, n.appendChild(e), e.className = U$, e), this.g = this._k6.g, this._9Y = new hB
  }
  ZB(WI, "opacity:0.7;vertical-align:middle;"), ZB(".Q-Graph-Nav img:hover,img.hover", UI), BN || (ZB(HI, VI + VB(jI) + XI), ZB(ZI, zI + VB(jI) + KI)), wW[_] = {
    _d5: function (t, i) {
      if (t._jC == i) return !1;
      t._jC = i, t[Yn].visibility = i ? "visible" : bo
    },
    _3O: function (t, i) {
      var n = i / 2 - this[JI][QI][wd] / 2 + sa;
      this._left[QI][Yn].top = n, this._right[QI][Yn].top = n, this._navPane.style[Yt] = t + sa, this[PI][Yn].height = i + sa
    },
    _9X: function (t, i, n, e) {
      this._d5(this[BI], t), this._d5(this[JI], i), this._d5(this[GI], n), this._d5(this._right, e)
    },
    _iZ: function () {
      var t = this[PI].parentNode;
      t && t[uo](this._navPane)
    },
    _kM: function () {
      var t = this[nl]._lW;
      if (t) {
        var i = t[oo];
        if (i.isEmpty()) this._9X(!1, !1, !1, !1);
        else {
          var n = t[Ov],
            e = n.y > i.y + 1,
            s = n.x > i.x + 1,
            h = n.bottom < i[Ft] - 1,
            r = n[Bt] < i[Bt] - 1;
          this._9X(e, s, h, r)
        }
      }
    }
  }, ZB(tS, iS), ZB(nS, "background-color: #7E7E7E;" + VB(jI) + ": background-color 0.2s linear;"), ZB(".Q-Graph-ScrollBar--V", "width: 8px;right: 0px;"), ZB(".Q-Graph-ScrollBar--H", "height: 8px;bottom: 0px;"), ZB(".Q-Graph-ScrollBar--V.Both", eS), ZB(".Q-Graph-ScrollBar--H.Both", sS), BN || (ZB(hS, VI + VB(jI) + rS), ZB(".Q-Graph:hover .Q-Graph-ScrollPane", zI + VB(jI) + ":opacity 0.3s linear;")), OW[_] = {
    _iZ: function () {
      this[aS]._iZ(), this[oS]._iZ(), delete this._verticalDragSupport, delete this[oS], this._mU[co] && this._mU.parentNode[uo](this._mU)
    },
    _mU: null,
    _oAP: null,
    _8U: null,
    init: function (t, i) {
      var n = x[Gn]($n);
      n[R] = fS, jB(n, {
        width: Al,
        height: Al,
        position: Il
      });
      var e = x.createElement($n);
      e[R] = "Q-Graph-ScrollBar Q-Graph-ScrollBar--V";
      var s = x.createElement($n);
      s.className = "Q-Graph-ScrollBar Q-Graph-ScrollBar--H", n.appendChild(e), n[ee](s), t.appendChild(n), this._mU = n, this._8U = s, this._oAP = e, s.isH = !0;
      var r = this,
        h = {
          onstart: function (t, i) {
            i[P].add($I)
          },
          onrelease: function (t, i) {
            i.classList[o]($I)
          },
          ondrag: function (t, i) {
            var n = r[nl]._lW;
            if (n) {
              var e = i.isH,
                s = e ? t.dx : t.dy;
              if (s && i[Wa]) {
                var h = n[Wa] / i.scale;
                e ? n[Ya](-h * s, 0) : n[Ya](0, -h * s), wF[cS](t)
              }
            }
          },
          enddrag: function (t, i) {
            var n = r._oAaseCanvas._lW;
            if (n && n[uS]) {
              var e = i.isH,
                s = e ? t.vx : t.vy;
              .1 < Math.abs(s) && (s *= n[Wa] / i.scale, e ? n[YI](-s, 0) : n._o9S(0, -s))
            }
          }
        };
      this[aS] = new oF(e, h), this._horizontalDragSupport = new oF(s, h)
    },
    _3O: function () {
      var t = this[nl]._lW;
      t && t[gA](this._kM[Ye](this))
    },
    _kM: function () {
      var t = this[nl]._lW;
      if (t) {
        var i = t[oo];
        if (i[yn]()) return this._4J(!1), void this._4K(!1);
        var n = t.viewportBounds,
          e = t[Yt],
          s = t.height,
          h = 1 / t[Wa],
          r = n.x > i.x + h || n[Bt] < i[Bt] - h,
          a = n.y > i.y + h || n[Ft] < i[Ft] - h,
          o = r && a;
        o ? ($N(this._oAP, _S), $N(this._8U, _S)) : (YN(this[lS], _S), YN(this._8U, _S)), this._4J(r, n, i, o ? e - 10 : e), this._4K(a, n, i, o ? s - 10 : s)
      }
    },
    _4J: function (t, i, n, e, s) {
      if (!t) return this._8U.style[sl] = ar, void(this._8U[Wa] = 0);
      var h = Math.min(i.x, n.x),
        r = Math.max(i[Bt], n[Bt]),
        a = e / (r - h);
      this._8U[Wa] = a, this._8U.style[Kt] = parseInt((i.x - h) * a) + sa, this._8U.style[Bt] = parseInt((r - i[Bt]) * a) + sa, this._8U[Yn][sl] = ""
    },
    _4K: function (t, i, n, e) {
      if (!t) return this[lS][Yn].display = ar, void(this._oAP[Wa] = 0);
      var s = Math.min(i.y, n.y),
        h = Math.max(i.bottom, n[Ft]),
        r = e / (h - s);
      this._oAP[Wa] = r, this[lS].style.top = parseInt((i.y - s) * r) + sa, this[lS][Yn].bottom = parseInt((h - i[Ft]) * r) + sa, this[lS].style.display = ""
    }
  }, AW.prototype = {
    shape: null,
    initialize: function () {
      bN(this, AW, Dy), this._oAL(), KY.initBindingProperties(this)
    },
    _oAL: function () {
      this.image = new nW(this[Nu][Gd]), this.addChild(this.image, 0), this[yo] = this[Uo]
    },
    invalidateShape: function () {
      this[Uo][uv](), this.invalidateRender()
    },
    _$z: function (t, i, n) {
      var e = this._d1.onBindingPropertyChange(this, t, i, n);
      return e = UY[_m](this, t, i, n) || e, KY[_m](this, t, i, n) || e
    },
    doValidate: function () {
      this[yo] && (this[Uo].data = this[Ki].path, this[yo][uu] = null != this._2U, this[yo][Eb] = this._2U);
      var t = this.$data[ab],
        i = 0,
        n = 0;
      t && (i = t.x, n = t.y);
      var e = this.$x != i || this.$y != n;
      return e && (this[wm] = !0), this.$x = i, this.$y = n, QY[_][Ny].call(this) || e
    },
    getLinkablePorts: function () {
      return this[Ki][OO]
    },
    getLinkableBounds: function () {
      return this[AO]
    },
    getDefaultPortPoint: function (t) {
      return OB(EB[ui], t || this[Hw]())
    },
    getPortPoint: function (t, i) {
      return t ? ((i = i || this.getLinkableBounds())[IO] ? (n = OB(t, i[IO]), i[kt] && (n = IF(n.x, n.y, i.rotate, i[SO] || 0, i.rotateY || 0)), n.x += i.tx || 0, n.y += i.ty || 0) : n = OB(t, i), n[dS] = t, n) : this[kO](i);
      var n
    },
    getPortPoints: function () {
      var t = this[CO]();
      if (t && Array[W](t)) {
        var i = [],
          n = this.getLinkableBounds();
        return t[Mt](function (t) {
          i[M](this[$w](t, n))
        } [Ye](this)), i
      }
    }
  }, dN(AW, QY), qN(AW.prototype, {
    path: {
      get: function () {
        return this[Ki][Gd]
      }
    },
    length: {
      get: function () {
        return this[Ki].length
      }
    }
  }), AW[_].addPoint = function (t, i, n) {
    var e = this._jD(t, i),
      s = this.data,
      h = FG(this.path, e.x, e.y, this[Ki][pO], n);
    if (!h) return !1;
    s[TO] = h.segments
  }, IW[_] = {
    _mW: function () {
      this._k6[Yn].visibility = rd
    },
    _kN: function () {
      this._k6[Yn].visibility = bo
    },
    clear: function () {
      this._9Y[St](), this._d7()
    },
    contains: function (t) {
      return t instanceof Object && t.id && (t = t.id), this._9Y.containsById(t)
    },
    _60: function (t) {
      oY[Fv](this._k6, ed, t ? sd + t[vS](J) + ")" : "")
    },
    addDrawable: function (t, i) {
      if (i) {
        var n = {
          id: ++TN,
          drawable: t,
          scope: i
        };
        return this._9Y.add(n), n
      }
      return t.id || (t.id = ++TN), this._9Y.add(t), t
    },
    removeDrawable: function (t) {
      if (!t.id) return this._9Y[At](t);
      this._9Y[o](t)
    },
    _9Y: null,
    invalidate: function () {
      this._d7()
    },
    _d7: function () {
      this[nl]._6W || this._kL()
    },
    _jE: function (t, i) {
      this._k6[ua](t, i)
    },
    _kL: function () {
      var t = this[nl]._scale,
        i = this.g;
      i._mB(), i[Ga](), this._oAaseCanvas._o9K(i);
      for (var n = this._9Y._kE, e = 0, s = n[N]; e < s; e++) i[Ga](), i[Ua](), this._h2(i, n[e], t), i[Ka]();
      i.restore()
    },
    _h2: function (t, i, n) {
      i instanceof Function ? i(t, n) : i.drawable instanceof Function && i.scope && i[bS][p](i[Hi], t, n)
    }
  }, sB[IA] = !0;
  var SW = function (t) {
    this._lW = t
  };

  function MW(t) {
    this[qy] = t, this.topCanvas = t[yS]
  }
  sB[gS] = 600, sB[ES] = xF.easeOut, SW[_] = {
    _lW: null,
    _fV: null,
    _i8: function (t, i, n) {
      this._n3();
      var e = Math.abs(t / 2),
        s = Math.abs(i / 2),
        h = Math.min(sB[gS], .6 * Math.max(e, s) * 1e3);
      if (h < 10) return !1;
      var r = t * h / 3,
        a = i * h / 3;
      this._mG(this._lW.tx + r, this._lW.ty + a, 0, {
        duration: h,
        animationType: function (t) {
          return -(2 * Math.pow(t, 1.5) - 3 * t)
        }
      }, n)
    },
    _86: function (t, i, n, e, s) {
      this._fV && this._fV._n3(), s && (this[xS] = !0, this._lW.pauseRendering(!0)), this._59(), this._fV = new pF(t, this, i, n), this._fV._7I = this._7I[Ye](this), this._fV._lZ(e)
    },
    _59: function () {
      this._lW.onAnimationStart()
    },
    _7I: function () {
      this.__delayRender && (this._lW.pauseRendering(!1), delete this[xS]), this._lW[pS]()
    },
    _f4: function () {
      return this._fV && this._fV._f4()
    },
    _n3: function () {
      this._fV && this._fV._n3()
    },
    _jW: function (t, i, n, e) {
      var s = this._fromTX + (this[TS] - this._fromTX) * t,
        h = this._fromTY + (this[mS] - this[wS]) * t,
        r = this[OS] + (this[AS] - this[OS]) * t;
      this._lW.translateTo(s, h, r, this.toInt)
    },
    _mG: function (t, i, n, e, s) {
      this._n3();
      var h = this._lW,
        r = h[Wa];
      if (n <= 0 && (n = r), t != h.tx || i != h.ty || n != r) {
        var a, o, f;
        e instanceof Object && (a = e[IS], o = e[SS], f = e[MS]);
        var c = h.tx,
          u = h.ty;
        if (!a)
          if (n != r) {
            var _ = r < n ? n / r : r / n;
            a = 60 * (_ = Math.log(_) / Math.log(1.3))
          } else a = rB(t, i, c, u) / 2;
        o = o || sB[gS], f = f || sB[ES], a = Math.min(o, a), this[kS] = c, this[wS] = u, this._fromScale = r, this[TS] = t, this[mS] = i, this[AS] = n, this._86(this._jW, a, f, s, n != r)
      }
    }
  }, sB[CS] = 8, sB.INTERACTION_HANDLER_SIZE_DESKTOP = 4, sB[LS] = 30, sB[RS] = 20;
  var kW = Math.PI;

  function CW(t, i) {
    this.interactions = t, this[_I] = i || PS
  }

  function LW(t) {
    vN(this, LW, arguments)
  }

  function RW(t) {
    vN(this, RW, arguments)
  }

  function PW(t) {
    this[cr] = t[ho](), this[Ns] = t[DS](), this[NS] = t[kO]()
  }

  function DW(t) {
    vN(this, DW, arguments)
  }

  function NW(t) {
    vN(this, NW, arguments)
  }

  function BW(t) {
    vN(this, BW, arguments)
  }

  function FW(t, i, n) {
    var e = t[BS],
      s = t[FS];
    t[Yn][Kt] = i - e / 2 + sa, t[Yn].top = n - s / 2 + sa
  }

  function GW() {}

  function $W(t) {
    this[qy] = t
  }

  function YW(t) {
    this[qy] = t
  }

  function WW(t) {
    this[qy] = t
  }

  function UW(t) {
    this[qy] = t
  }

  function HW(t) {
    this.graph = t
  }

  function VW(t) {
    vN(this, VW, arguments), this[fk] = BN ? 8 : 5
  }

  function jW(t) {
    return t[Oi] == CG || t[Oi] == LG
  }

  function XW(t) {
    this[qy] = t, this[yS] = t.topCanvas
  }
  MW.prototype = {
    element: null,
    _$q: !1,
    setCurrentElement: function (t, i) {
      this[GS] = t, i && this[$S]()
    },
    onDataPropertyChange: function (t) {},
    addDataPropertyChangeListener: function () {
      this._$q || (this._$q = !0, this[qy][YS][Xi](this._1N, this))
    },
    removeDataPropertyChangeListener: function () {
      this._$q && (this._$q = !1, this[qy][YS][Zi](this._1N, this))
    },
    _1N: function (t) {
      this[GS] && t[pi] == this[GS] && this[WS](t)
    },
    onElementRemoved: function (t, i) {
      var n, e;
      this.element && (t == this.element || HN(t) && (n = this[GS], e = !1, aN(t, function (t) {
        if (n == t) return !(e = !0)
      }), e)) && this[Rs](i)
    },
    onClear: function (t) {
      this.element && this[Rs](t)
    },
    destroy: function (t) {
      delete this[GS], this[US](), this.removeDrawable(), this[HS] = null
    },
    invalidate: function () {
      this.topCanvas[Rl]()
    },
    removeDrawable: function () {
      this[VS] && (this[yS].removeDrawable(this._n5ableId), delete this._n5ableId, this.invalidate())
    },
    drawableList: null,
    addDrawable: function () {
      this[VS] || (this._n5ableId = this[yS][jS](this[no], this).id, this.invalidate())
    },
    isShowing: function () {
      return this[VS]
    },
    draw: function (i, n) {
      this[HS] && this[HS][Mt](function (t) {
        t[no](i, n)
      }), this[XS](i, n)
    },
    doDraw: function (t, i) {},
    escapable: !0,
    onkeydown: function (t, i) {
      this[ZS] && 27 == t[R_] && (XN(t), this[Rs](i))
    }
  }, wF.DrawableInteraction = MW, CW[_] = {
    defaultCursor: PS,
    getInteractionInstances: function (t) {
      if (!this[zS]) return null;
      for (var i = [], n = 0, e = this[zS].length; n < e; n++) {
        var s = this.interactions[n];
        s instanceof Function && (s = new s(t)), s.install instanceof Function && s[KS](t), i.push(s)
      }
      return i
    }
  }, LW[_] = {
    _eY: null,
    _kO: null,
    destroy: function (t) {
      bN(this, LW, Rs, arguments), delete this._kO, delete this[ys], delete this._eY
    },
    doDraw: function (i, t) {
      var n = this[Ns];
      n && (i.beginPath(), n[Mt](function (t) {
        this[JS](i, t)
      }, this), this[QS] && i[lc](), this[qS](i))
    },
    styleDraw: function (t) {
      var i = function (t, i) {
        if (!t) return i;
        var n = {};
        for (var e in t) n[e] = t[e];
        for (var e in i) n[e] === k && (n[e] = i[e]);
        return n
      }(this.graph[tI], this[tM](this.graph));
      i[Pa] && (t[Pa] = i.lineWidth, i[Df] && (t[Df] = i[Df]), i[Nf] && (t[Nf] = i[Nf]), i.lineDash && (t[jf] = i.lineDash, t[Xf] = i.lineDashOffset || 0), t[Da] = i.strokeStyle, t.stroke()), i.fillStyle && (t[Ba] = i[Ba], t[Va]())
    },
    drawPoint: function (t, i, n) {
      if (n) t[Ia](i.x, i.y);
      else if (wF[W](i)) {
        var e = i[0],
          s = i[1];
        t[Sa](e.x, e.y, s.x, s.y)
      } else t.lineTo(i.x, i.y)
    },
    setCurrentPoint: function (t) {
      this[iM] = t
    },
    addPoint: function (t) {
      this._kO || (this._kO = [], this.addDrawable()), this._kO.push(t), this[Rl]()
    }
  }, dN(LW, MW), qN(LW[_], {
    currentPoint: {
      get: function () {
        return this[ys]
      },
      set: function (t) {
        this[ys] = t, this.invalidate()
      }
    },
    prevPoint: {
      get: function () {
        return this._kO && this._kO[N] ? this._kO[this._kO.length - 1] : null
      }
    },
    points: {
      get: function () {
        if (this[ys] && this._kO && this._kO.length) return this._kO[B](this[ys])
      }
    }
  }), wF.DrawPathInteraction = LW, RW[_] = {
    _jG: function (t, i) {
      return this.start && t != this[nM] ? this._eZ(t, i) : this[eM](t, i)
    },
    _oAR: function (t, i) {
      return t instanceof wY && i.canLinkFrom(t)
    },
    _eZ: function (t, i) {
      return t instanceof wY && i[uA](t, this.start)
    },
    _o90: function (t, i, n, e) {
      if (this._oBurrentPort) return this[sM][hM](n, e);
      var s = i[As](t);
      return s && s[AO] ? s[AO].center : t.location
    },
    _d8: function (t, i) {
      this._lV && (clearTimeout(this._lV), delete this._lV), this._lV = setTimeout(function (t) {
        if (delete this._lV, this[nM] && this[iM]) {
          var i = t.x - this[iM].x,
            n = t.y - this.currentPoint.y;
          Math.sqrt(i * i + n * n) * this[qy][Wa] <= 2 && this.addPoint(this[iM])
        }
      } [Ye](this, this[rM](t)), sB[ue])
    },
    destroy: function (t) {
      bN(this, RW, Rs, arguments), this.start = null, this[aM] = null, this._lV && (clearTimeout(this._lV), delete this._lV), this[oM] = null, this[sM] = null
    },
    ondblclick: function (t, i) {
      this[Rs](i)
    },
    finish: function (t, i, n, e) {
      var s;
      this._kO && 2 <= this._kO[N] && (this._kO[e_](), s = new hB, aN(this._kO, function (t) {
        if (wF[W](t)) {
          var i = t[0],
            n = t[1];
          s.add(new DG(OF[df], [i.x, i.y, n.x, n.y]))
        } else s.add(new DG(OF.SEGMENT_LINE_TO, [t.x, t.y]))
      }, this)), i[fM](this.start, n, t, s, this.startPort, e), this.destroy(i)
    },
    onstart: function (t, i) {
      if (this[nM]) {
        var n = t[Os](),
          e = i[bd](t);
        this._eZ(n, i) ? this[cM](t, i, n, new PW(i[As](n))[hM](e.x, e.y)[dS]) : this[Dr](e)
      }
    },
    startdrag: function (t, i) {
      if (!this[nM] && !t.responded) {
        var n = t[Os]();
        if (n && this[eM](n, i)) {
          t.responded = !0, this[nM] = n;
          var e = i.toLogical(t),
            s = this[uM](n, i, e.x, e.y);
          this[aM] = s.port, this.addPoint(s)
        }
      }
    },
    ondrag: function (t, i) {
      this[_M](t, i)
    },
    enddrag: function (t, i) {
      if (this.start) {
        var n = this[oM] || t[Os]();
        if (this._eZ(n, i)) {
          var e = i[bd](t);
          this[cM](t, i, n, new PW(i.getUI(n))[hM](e.x, e.y)[dS])
        }
      }
    },
    onrelease: function (t, i) {
      nF(t) && this[Rs](i)
    },
    _oAS: null,
    onmousemove: function (t, i) {
      var n, e, s, h, r, a, o = i.toLogical(t),
        f = (n = i, e = o.x, s = o.y, h = function (t) {
          return this._jG(t, i)
        } [Ye](this), n[lM](function (t) {
          var i = t[Ki];
          if (i instanceof wF[ZO] && (!h || !1 !== h(i)) && t[jd][Zt](e - t.x, s - t.y) && t[Wo](e, s, sB[Kr] / n[Wa])) return r = i, !1
        }), r);
      f != this[oM] && (this._oAS = f, this[sM] = f ? new PW(i[As](f)) : null, f ? (this[jS](), this.drawableList = [this[sM]]) : this.drawableList = null, this[Rl]()), this[sM] && (a = this._oBurrentPort.nearestPoint(o.x, o.y), this[Rl]()), this[nM] && (this.currentPoint = a || o, nF(t) && this._d8(t, i))
    },
    toLogicalPoint: function (t) {
      return this[qy][bd](t)
    },
    getDefaultDrawStyles: function (t) {
      return {
        lineWidth: this.graph[dA](WY.EDGE_WIDTH),
        strokeStyle: this[qy][dA](WY[qE]),
        lineDash: this[qy].getDefaultStyle(WY[dT]),
        lineDashOffset: this.graph[dA](WY[vT]),
        lineCap: this.graph.getDefaultStyle(WY[Kp]),
        lineJoin: this[qy].getDefaultStyle(WY[Jp])
      }
    }
  }, dN(RW, LW), wF.CreateEdgeInteraction = RW, PW.prototype[dM] = function (t, i, n) {
    t.beginPath(), t[cr](n.x - 0, n.y - 0, n[Yt] + 0, n.height + 0), t.lineWidth = 2 / i, t[Da] = GO, t[Za]()
  }, PW.prototype[JS] = function (t, i, n) {
    t.beginPath();
    var e = 4 / i;
    t[Ia](n.x + e, n.y), t.arc(n.x, n.y, e, 0, 2 * Math.PI, !1), t.lineWidth = 1 / i, n[vM] ? (t[Da] = bM, t.fillStyle = yM) : (t.strokeStyle = GO, t[Ba] = "rgba(255, 255, 255, 0.8)"), t.fill(), t[Za]()
  }, PW.prototype[no] = function (i, n) {
    var t = this[cr];
    this.drawRect(i, n, t), this.points && this[Ns][Mt](function (t) {
      this[JS](i, n, t)
    } [Ye](this))
  }, PW[_].nearestPoint = function (s, h, r) {
    if (this[Ns]) {
      r = r || 20;
      var a, o = r *= r;
      return this[Ns][Mt](function (t) {
        t.marked && (t[vM] = !1);
        var i = t.x - s,
          n = t.y - h,
          e = i * i + n * n;
        e < r && e < o && (o = e, a = t)
      }), a && (a[vM] = !0), a || this.defaultPoint
    }
    return this.defaultPoint
  }, DW[_] = {
    getDefaultDrawStyles: function (t) {
      return {
        lineWidth: this[qy][dA](WY[qT]),
        strokeStyle: this.graph[dA](WY[Yp]),
        fillStyle: this[qy][dA](WY[Wp])
      }
    },
    finish: function (t, i) {
      if (this._kO && this._kO[N]) {
        var n = this._kO,
          s = 0,
          h = 0,
          e = 0;
        n.forEach(function (i) {
          wF[W](i) ? i.forEach(function (t) {
            s += i.x, h += i.y, e++
          }) : (s += i.x, h += i.y, e++)
        }), s /= e, h /= e;
        var r = [];
        n[Mt](function (t, i) {
          if (0 != i)
            if (wF[W](t)) {
              var n = t[0],
                e = t[1];
              r[M](new DG(OF.SEGMENT_QUAD_TO, [n.x - s, n.y - h, e.x - s, e.y - h]))
            } else r.push(new DG(OF[lf], [t.x - s, t.y - h]));
          else r[M](new DG(OF[gM], [t.x - s, t.y - h]))
        }), this.createElement(t, r, s, h), this[Rs](i)
      }
    },
    startdrag: function (t, i) {
      t[EM] = !0
    },
    createElement: function (t, i, n, e) {
      return this[qy].createShapeByInteraction(t, i, n, e)
    },
    onstart: function (t, i) {
      var n = i.toLogical(t);
      this._eY = n, this.addPoint(n)
    },
    onmousemove: function (t, i) {
      this._eY && (this[iM] = i[bd](t))
    },
    ondblclick: function (t, i) {
      if (this._eY) {
        if (this._kO.length < 3) return void this.destroy(i);
        delete this._kO[this._kO[N] - 1], this[cM](t, i)
      }
    },
    isClosePath: !0
  }, dN(DW, LW), wF[xM] = DW, NW[_] = {
    isClosePath: !1,
    createElement: function (t, i, n, e) {
      return this[qy][pM](t, i, n, e)
    },
    getDefaultDrawStyles: function () {
      return {
        lineWidth: hW[WY.SHAPE_STROKE],
        strokeStyle: hW[WY[Yp]],
        lineDash: this[qy][dA](WY.SHAPE_LINE_DASH),
        lineDashOffset: this[qy][dA](WY[zp]),
        lineCap: this.graph[dA](WY.LINE_CAP),
        lineJoin: this.graph[dA](WY.LINE_JOIN)
      }
    }
  }, dN(NW, DW), wF[TM] = NW, BW[_] = {
    destroy: function (t) {
      bN(this, BW, Rs, arguments), t[uI] = "", this.start = null
    },
    doDraw: function (t, i) {
      if (this[nM] && this[iM]) {
        var n, e;
        this[qy][tI] && (n = this[qy][tI][fv], e = this[qy].interactionProperties.edgeType), n = n || this.graph[qA] || wF[mM], e = e || this[qy][sb];
        var s = n.drawReferenceLine || wF[mM][gO],
          h = this[qy][As](this[nM]);
        h && h.bodyBounds && (h = h[AO][We], t[Ua](), s(t, h, this[iM], e), this[qS](t))
      }
    },
    canLinkFrom: function (t, i) {
      return t instanceof wY && i.canLinkFrom(t)
    },
    canLinkTo: function (t, i) {
      return t instanceof wY && i[uA](t, this[nM])
    },
    startdrag: function (t, i) {
      var n = t[Os]();
      this.canLinkFrom(n, i) && (t[EM] = !0, this[nM] = n, i.cursor = Ks, this[jS]())
    },
    ondrag: function (t, i) {
      this[nM] && (wF.stopEvent(t), this.currentPoint = i[bd](t), this.invalidate())
    },
    enddrag: function (t, i) {
      if (this.start) {
        this.invalidate();
        var n = t.getData();
        this[uA](n, i) && i[fM](this.start, n, t), this[Rs](i)
      }
    },
    getDefaultDrawStyles: function () {
      return {
        lineWidth: this[qy][dA](WY[JE]),
        strokeStyle: this[qy][dA](WY.EDGE_COLOR),
        lineDash: this[qy].getDefaultStyle(WY.EDGE_LINE_DASH),
        lineDashOffset: this[qy][dA](WY[vT]),
        lineCap: this[qy][dA](WY[Kp]),
        lineJoin: this.graph[dA](WY[Jp])
      }
    }
  }, dN(BW, LW), wF.CreateSimpleEdgeInteraction = BW, sB[wM] = !1, GW[_] = {
    html: null,
    createHTML: function () {
      var i = x[Gn](OM);
      i.className = AM, i[Yn][Pu] = ml, i[Yn][Jm] = We, i[Yn][jh] = IM, i[Yn][ry] = SM, i[Yn][MM] = "0px 0px 10px rgba(40, 85, 184, 0.75)", i[Yn][sl] = ar, i[Yn][cl] = bo;
      var n = this;
      return i[kM] = function (t) {
        n[CM](t)
      }, i.onkeydown = function (t) {
        27 != t.keyCode || n[LM]()
      }, i[RM] = function (t) {
        if (13 == t[R_] || 10 == t.keyCode) {
          if (t[s](), t.altKey || t.ctrlKey || t[PM]) return function (t, i) {
            if (Y == typeof t.selectionStart && Y == typeof t[DM]) {
              var n = t[Li],
                e = t.selectionStart;
              t[Li] = n[C](0, e) + i + n[C](t.selectionEnd), t[DM] = t[NM] = e + i[N]
            } else if (void 0 !== x[BM]) {
              var s = x[BM][FM]();
              s[VO] = i, s.collapse(!1), s.select()
            }
          }(i, F_), void n[CM](t);
          n[GM]()
        }
      }, x.body[ee](i), i
    },
    setText: function (t, i) {
      this[UA][Li] = t || "", i && (this[UA].style[yp] = i),
        function (t) {
          if (ON) {
            var i = u[kA] || u.pageXOffset,
              n = u[$M] || u[ld];
            return t[YM](), u[WM](i, n)
          }
          t.select()
        }(this[UA]), this[UM](this.html)
    },
    onSizeChange: function (t) {
      t[BS], t[FS];
      var i = function (t) {
        var n = x[Gn](ha)[ra](aa),
          i = getComputedStyle(t, null),
          e = i[jm];
        e = e || i.fontStyle + $ + i[yp] + $ + i[wp], n.font = e;
        var s = t.value[G](F_),
          h = parseInt(i.fontSize),
          r = 0,
          a = 0;
        return wF[Mt](s, function (t) {
          var i = n.measureText(t)[Yt];
          r < i && (r = i), a += 1.2 * h
        }), {
          width: r,
          height: a
        }
      }(t);
      return t.style[Yt] = i[Yt] + 30 + sa, t[Yn][Wt] = i[Wt] + 10 + sa, i
    },
    onValueChange: function (t) {
      var i = t.target;
      this[UM](i), i[Yn][Kt] = i.x - i[BS] / 2 + sa
    },
    onClickOnWindow: function (t) {
      t[hl] != this.html && (sB[wM] ? this[GM]() : this.cancelEdit())
    },
    startEdit: function (t, i, n, e, s) {
      this[UA] || (this[UA] = this[HM]()), this.stopEditWhenClickOnWindow || (this.stopEditWhenClickOnWindow = function (t) {
        this.onClickOnWindow(t)
      }.bind(this)), u[fe](Je, this[VM], !0), this[Qy] = s, this[UA].x = t, this[UA].y = i, this.html[Yn].display = MI, FW(this[UA], t, i), this[jM](n, e || 10), FW(this.html, t, i)
    },
    isEditing: function () {
      return ar != this[UA][Yn][sl]
    },
    cancelEdit: function () {
      this[GM](!0)
    },
    stopEdit: function (t) {
      if (this.isEditing()) {
        u[WA](Je, this[VM]);
        var i = this[UA][Li];
        !t && this.callback && this[Qy](i), this[UA][Yn][sl] = ar, this[UA][Li] = null, this.callback = null
      }
    },
    destroy: function () {
      this.html && x[yo][uo](this[UA])
    }
  }, wF[XM] = GW, $W[_] = {
    destroy: function (t) {
      t.labelEditor && (t[ZM][Rs](), delete t[ZM])
    },
    ondblclick: function (t, i) {
      var n = t[Os]();
      if (n) {
        if (!1 !== n.dblclickable) {
          if (i[vO] && i.isEditable(n)) {
            var e = i[Wo](t);
            if (e instanceof iW && !1 !== e[vO]) {
              var s = i[ZM];
              s || (i.labelEditor = s = new GW);
              var h = e[ho]();
              return h = function (t, i, n) {
                t += u.pageXOffset, i += u[ld];
                var e = n[qn]();
                return {
                  x: t + e[Kt],
                  y: i + e.top
                }
              }((h = i[zM](h.x + h[Yt] / 2, h.y + h[Wt] / 2)).x, h.y, i.html), void i.startLabelEdit(n, e, s, h)
            }
          }
          var r = n instanceof PY,
            a = n instanceof xY && n.hasEdgeBundle();
          if (!n._4E || !lF(t) && (r || a)) return r ? (n[cv] = !n[cv], void this[qy][sA](new sU(this.graph, sU[KM], t, n))) : void(a && this[qy][JM](n) && this.graph[sA](new sU(this[qy], sU[QM], t, n)));
          i[zb] = n
        }
      } else {
        if (i.currentSubNetwork) return void i[qM]();
        if (i[tk]) {
          var o = i[ik] || 1;
          Math.abs(i[Wa] - o) < 1e-4 ? i[nk]() : i[wA](o)
        }
      }
    }
  }, YW[_] = {
    onkeydown: function (t, i) {
      if (i[vO]) {
        var n = t.keyCode;
        if (8 == n || 46 == n || 127 == n) return i[ek](t), void VN(t);
        lF(t) && (67 != n && 86 != n && 90 != n && 89 != n || VN(t))
      }
    }
  }, wF[sk] = YW, WW.prototype = {
    onkeydown: function (t, i) {
      if (t.metaKey && 83 == t[R_]) {
        var n = i.exportImage(i[Wa], i[Ov]),
          e = u[hk]()[rk];
        e.title = ak + n.width + ok + n[Wt];
        var s = e[Gn](vo);
        s.src = n.data, e.body.appendChild(s), VN(t)
      }
    }
  }, HW[_] = {
    onkeydown: function (t, i) {
      lF(t) || (37 == t[R_] ? (this._6H(i, 1, 0), VN(t)) : 39 == t[R_] ? (this._6H(i, -1, 0), VN(t)) : 38 == t[R_] ? (this._6H(i, 0, 1), VN(t)) : 40 == t[R_] && (this._6H(i, 0, -1), VN(t)))
    },
    _6H: function (t, i, n) {
      t[YI](i, n)
    },
    onstart: function (t, i) {
      this._lZ && this.destroy(i)
    },
    _lZ: !(UW[_] = {
      destroy: function (t) {
        delete this.draggingElements, delete this.currentDraggingElement
      },
      _2L: function (i) {
        var n = new hB;
        return i.selectionModel.forEach(function (t) {
          i[FA](t) && i.isVisible(t) && n.add(t)
        }, this), n
      },
      onstart: function (t, i) {
        this[ck] && this[Rs](i)
      },
      startdrag: function (t, i) {
        if (!(t.responded || t.touches && 1 != t.touches.length)) {
          var n = t[Os]();
          if (n && i[uk](n) && i[FA](n)) {
            t[EM] = !0, this[ck] = n, this[_k] = this._2L(i);
            var e = new sU(i, sU[lk], t, this[ck], this.draggingElements[Dn]);
            !1 !== i.beforeInteractionEvent(e) ? i[sA](e) : this[Rs](i)
          } else this[Rs](i)
        }
      },
      ondrag: function (t, i) {
        if (this.currentDraggingElement)
          if (t[me] && 1 != t[me].length) this[ws](t, i);
          else {
            XN(t);
            var n = t.dx,
              e = t.dy,
              s = i.scale;
            n /= s, e /= s;
            var h = new sU(i, sU.ELEMENT_MOVING, t, this[ck], this.draggingElements.datas);
            i[dk](this[_k][Dn], n, e), i[sA](h)
          }
      },
      enddrag: function (t, i) {
        if (this[ck]) {
          if (this.draggingElements && this.draggingElements.length) {
            if (t[PM]) {
              var s, n = i.toLogical(t),
                h = n.x,
                r = n.y;
              i[lM](function (t) {
                var i = t[Ki];
                if (!this[_k][Fn](i) && t[jd][Zt](h - t.x, r - t.y) && t[Wo](h, r, 1)) {
                  if (i instanceof wF[QA]) {
                    if (!i[ov]) return;
                    for (var n = this[_k][N]; 0 < n--;) {
                      var e = this.draggingElements.get(n);
                      if (e instanceof wF[ZO] && e[vk](i)) return
                    }
                    return s = i, !1
                  }
                  return (i.enableSubNetwork || i._jB() && i.expanded) && (s = i), !1
                }
              }, this), s && this.draggingElements.forEach(function (t) {
                for (var i = t[Pi]; i;) {
                  if (this.draggingElements[Fn](i)) return;
                  i = i.parent
                }
                t[Pi] = s
              }, this)
            }
            var e = new sU(i, sU[bk], t, this[ck], this[_k][Dn]);
            i.onInteractionEvent(e)
          }
          this.destroy(i)
        }
      },
      onpinch: function (t, i) {
        this[ck] && this[ws](t, i)
      },
      step: 1,
      onkeydown: function (t, i) {
        var n, e;
        if (lF(t) && (37 == t.keyCode ? n = -1 : 39 == t[R_] ? n = 1 : 38 == t.keyCode ? e = -1 : 40 == t[R_] && (e = 1), n || e)) {
          var s = this._2L(i)[Dn];
          if (0 != s[N]) {
            VN(t), n = n || 0, e = e || 0;
            var h = this[yk] / i.scale,
              r = new sU(i, sU[bk], t, null, s);
            i.moveElements(s, n * h, e * h), i[sA](r)
          }
        }
      }
    }),
    startdrag: function (t, i) {
      if (!t[EM]) {
        i[bA](), t.responded = !0, this._lZ = !0, i[uI] = uF;
        var n = new sU(i, sU[gk], t);
        i[sA](n)
      }
    },
    ondrag: function (t, i) {
      this._lZ && i[Ya](t.dx || 0, t.dy || 0)
    },
    enddrag: function (t, i) {
      if (this._lZ) {
        if (!1 !== i[uS]) {
          var n = t.vx,
            e = t.vy;
          (.1 < Math.abs(n) || .1 < Math.abs(e)) && i[YI](n, e)
        }
        this[Rs](i);
        var s = new sU(i, sU.PAN_END, t);
        i[sA](s)
      }
    },
    startpinch: function (t, i) {
      i[yI](!0)
    },
    onpinch: function (t, i) {
      this._lZ = !0;
      var n = t[Ve];
      if (n) {
        var e = i[jO](t.center);
        i[EA](n, e.x, e.y, !1)
      }
    },
    endpinch: function (t, i) {
      i[yI](!1)
    },
    destroy: function (t) {
      this._lZ = !1, t[uI] = null
    }
  }, VW[_] = {
    onDataPropertyChange: function (t) {
      this[qy][gA](function () {
        this._kM()
      }, this)
    },
    destroy: function () {
      this[qy][uI] = null, this[GS] && delete this[GS]._editting, this[Ek] = !1, delete this[Oa], delete this[ys], delete this._oBanEdit, bN(this, VW, Rs, arguments)
    },
    _o91: null,
    _61: function (t) {
      this[Oa] = t, this[Rl]()
    },
    isEndPointEditable: function (t, i) {
      return this[qy][xk](t, i)
    },
    drawPoint: function (t, i, n) {
      i[pk] && !this[xk](this.element, i[Tk]) || (t[Ua](), i[mk] ? t[cr](i.x - this[fk] / n, i.y - this[fk] / n, this[fk] / n * 2, this.handlerSize / n * 2) : t.arc(i.x, i.y, this[fk] / n, 0, 2 * Math.PI, !1), t[Pa] = 1 / n, t[jf] = [], t[Da] = RI, t[Ba] = "rgba(255, 255, 0, 0.8)", t.stroke(), t[Va]())
    },
    _h3: function (t, i, n, e) {
      e ? t.moveTo(i, n) : t[ja](i, n)
    },
    doDraw: function (t, i) {
      this[wk](t, i)
    },
    drawLine: function (r, n) {
      if (this[Oa] && this[Oa][N]) {
        var t = this[Oa];
        r[Ga](), this[GS] instanceof AY && (r[Ya](this[GS].x, this.element.y), this.element[kt] && r.rotate(this[GS].rotate));
        var a, o = [];
        r.beginPath();
        var f = t.length;
        t.forEach(function (t, i) {
          if (t.type != OF.SEGMENT_CLOSE)
            for (var n = !i || i == f - 1, e = 0, s = t[Ns]; e + 1 < s[N];) {
              var h = {
                x: s[e],
                y: s[e + 1],
                isControlPoint: this._77(t, e)
              };
              n && (h[pk] = !0, h[Tk] = 0 == i), o[M](h), this._h3(r, h.x, h.y, null == a), a = h, e += 2
            }
        }, this), r[Pa] = 1 / n, r[jf] = [2 / n, 3 / n], r[Da] = Ok, r[Za](), o[Mt](function (t, i) {
          this[JS](r, t, n, i)
        }, this), r[Ka]()
      }
    },
    invalidate: function () {
      this[yS][Rl]()
    },
    _3Q: function (t) {
      if (this[GS] != t && (this[GS] && this[Rs](), t && this[Ak](t))) {
        var i = this._62(t, this.graph);
        i && (this[Ik](t, !0), t[Sk] = !0, this[Mk] = !0, this._61(i), this[jS]())
      }
    },
    _kM: function () {
      if (this[kk]() && this[GS]) {
        var t = this._62(this.element, this[qy]);
        t ? this._61(t) : this[Rs](this[qy])
      }
    },
    _62: function (t, i) {
      if (i[Ak](t)) {
        var n = t.pathSegments || [];
        n instanceof hB && (n = n.toDatas());
        var e = i[As](t);
        if (e instanceof wF[mM]) {
          var s = e.getEndPointBounds(i[As](t.fromAgent)),
            h = e.getEndPointBounds(i[As](t[gv])),
            r = s[We],
            a = h[We],
            o = e.getStyle(WY[hx]),
            f = e[um](WY[bT]);
          o && (r.x += o.x || 0, r.y += o.y || 0), f && (a.x += f.x || 0, a.y += f.y || 0), n[m](0, 0, new wF[gf](OF[gM], [r.x, r.y])), n[M](new wF.PathSegment(OF[gM], [a.x, a.y]))
        }
        return n
      }
    },
    _jD: function (t, i) {
      var n = {
        x: t -= this.element.x,
        y: i -= this[GS].y
      };
      return this[GS][kt] && cW(n, -this[GS][kt]), n
    },
    isPointAddable: function (t, i) {
      return !0
    },
    isPointRemovable: function (t, i, n) {
      return !0
    },
    onclick: function (t, i) {
      if (i[vO] && t[Ck] && this[GS]) {
        var n = this._h4(t, i);
        if (n && n[mk] && !1 !== this[Lk](this.element, n, i)) 0 <= n.index && (this[GS][Rk](n[Ji]), (e = new sU(i, sU.POINT_REMOVE, t, this[GS])).point = n, i[sA](e));
        else if (this[GS] == t[Os]() && !1 !== this.isPointAddable(this[GS], i)) {
          var e, s = i.toLogical(t);
          !1 !== i[As](this[GS])[Dr](s.x, s.y, this[fk] || 2) && ((e = new sU(i, sU[Pk], t, this[GS]))[Dk] = s, i[sA](e))
        }
      }
    },
    isEditable: function (t) {
      return this.graph[Ak](t) && (t instanceof AY || t instanceof xY && (!t[Ud]() || t[Qv]()))
    },
    ondblclick: function (t, i) {
      if (i.editable) {
        var n = t[Os]();
        n && n != this[GS] && !n[Sk] ? this._3Q(n) : this[Rs](i)
      } else this[GS] && this[Rs](i)
    },
    onstart: function (t, i) {
      if (this._mousePressed = !0, i[vO]) {
        if (!t.responded)
          if (this[GS] && this._h4(t, i)) t[EM] = !0;
          else {
            var n = t.getData();
            n && i.isResizable(n) && n instanceof AY ? this[GS] && n != this[GS] && this[Rs]() : this._3Q(n)
          }
      } else this[GS] && this[Rs](i)
    },
    onrelease: function (t, i) {
      this[Ek] = !1, this[GS] && (this[Mk] = !0)
    },
    _o92: null,
    _h4: function (t, f) {
      var c = f.toLogical(t);
      this.element instanceof AY && (c = this._jD(c.x, c.y));
      var u, i = f[Wa],
        _ = this[fk] / i,
        l = this._o91,
        d = l[N],
        v = this[GS] instanceof wF[QA];
      if (l[Mt](function (t, i) {
          for (var n = 0, e = t[Ns]; n + 1 < e.length;) {
            var s = e[n],
              h = e[n + 1];
            if (rB(c.x, c.y, s, h) < _) {
              if (u = {
                  oldPoints: e[C](0),
                  segment: t,
                  index: i,
                  pointIndex: n
                }, v && --u[Ji], v && !jW(t) && (0 == i || i == l[N] - 1)) {
                u[pk] = !0;
                var r = 0 == i,
                  a = (u[Tk] = r) ? wF.Styles[hx] : wF.Styles.EDGE_TO_OFFSET,
                  o = f[um](this.element, a) || {};
                u[Nk] = [o.x || 0, o.y || 0]
              }
              return this._77(t, n) && (u[mk] = !0, 0 < i && (u[Bk] = l instanceof hB ? l[Tt](i - 1) : l[i - 1]), i + 1 < d && (u[Fk] = l instanceof hB ? l[Tt](i + 1) : l[i + 1], u[Fk].points && (u[Gk] = u[Fk][Ns][C](0)))), !1
            }
            n += 2
          }
        }, this), !u || !u.isEndPoint || this.isEndPointEditable(this[GS], u[Tk])) return u
    },
    _77: function (t, i) {
      return i == t[Ns][N] - 2
    },
    startdrag: function (t, i) {
      if (this[GS] && this._oBanEdit && (this[ys] = this._h4(t, i), this._o92)) {
        this.removeDrawable(), t[EM] = !0;
        var n = new sU(i, sU.POINT_MOVE_START, t, this.element);
        n[Dk] = this._o92, i[sA](n)
      }
    },
    onkeyup: function (t, i) {
      this[Ek] && 16 != !t[R_] && this[GS] && this[ys] && this._o92[$k] && this._d9(this[ys][$k].x, this._o92[$k].y, i, t, !1)
    },
    onkeydown: function (t, i) {
      bN(this, VW, Yk, arguments), this[Ek] && this.element && this[ys] && t[PM] && this[ys][$k] && this._d9(this[ys].delta.x, this[ys][$k].y, i, t, !0)
    },
    _d9: function (t, i, n, e, s) {
      var h = this[ys],
        r = this.element,
        a = h[Nk],
        o = h[Wk];
      if (h[pk]) {
        var f, c = h.isFrom ? wF[KA][hx] : wF[KA][bT],
          u = {
            x: a[0] + t,
            y: a[1] + i
          };
        return r[Fv](c, u), (f = new sU(n, sU[Uk], e, r)).point = h, void n[sA](f)
      }
      if (s && h[mk]) {
        var _ = a[a.length - 2] + t,
          l = a[a.length - 1] + i,
          d = h[Bk],
          v = h[Fk],
          b = 20 / n.scale,
          y = Number[zt],
          g = y,
          E = y,
          x = y;
        d && (d = d[xa], y = Math.abs(_ - d.x), E = Math.abs(l - d.y)), v && (v = v[xa], g = Math.abs(_ - v.x), x = Math.abs(l - v.y)), y < b && y < g ? t += d.x - _ : g < b && g < y && (t += v.x - _), E < b && E < x ? i += d.y - l : x < b && x < E && (i += v.y - l)
      }
      if (h[mk] && jW(o)) {
        for (var p = o.points.length - 4; p < o.points.length;) {
          var T = a[p] + t,
            m = a[p + 1] + i;
          o[Ns][p] = T, o.points[p + 1] = m, p += 2
        }
        if (h[Fk] && jW(h[Fk])) {
          var w = h[Gk];
          T = w[0] + t, m = w[1] + i, h.nextSegment[Ns][0] = T, h[Fk][Ns][1] = m
        }
      } else T = a[p = h[Hk]] + t, m = a[p + 1] + i, o.points[p] = T, o[Ns][p + 1] = m;
      r.firePathChange(), (f = new sU(n, sU.POINT_MOVING, e, r)).point = h, n[sA](f)
    },
    ondrag: function (t, i) {
      if (this[GS] && this[ys]) {
        var n = this[ys],
          e = this[GS],
          s = t[Ws],
          h = t[Us],
          r = i.scale;
        if (s /= r, h /= r, e[kt]) {
          var a = {
            x: s,
            y: h
          };
          cW(a, -e[kt]), s = a.x, h = a.y
        }
        n.delta = {
          x: s,
          y: h
        }, this._d9(s, h, i, t, t[PM])
      }
    },
    enddrag: function (t, i) {
      if (this.element && this[ys]) {
        this[jS](), this._kM();
        var n = new sU(i, sU[Vk], t, this.element);
        n[Dk] = this[ys], i[sA](n)
      }
    },
    onmousemove: function (t, i) {
      this[GS] && (i[uI] = t[Ck] && (this._h4(t, i) || this.element == t[Os]()) ? "crosshair" : null)
    }
  }, dN(VW, MW), sB[jk] = 1, sB[Xk] = JN(3724541951), sB.SELECTION_RECTANGLE_FILL_COLOR = JN(1430753245), OF[Zk] = zk, OF[Kk] = Jk, sB[Qk] = OF.RECTANGLE_SELECTION_MODE_INTERSECT, XW[_] = {
    onstart: function (t, i) {
      this._lZ && this[Rs](i)
    },
    startdrag: function (t, i) {
      t[EM] || (t.responded = !0, this._lZ = i[bd](t), i[uI] = Ks, this[qk] = this[yS].addDrawable(this._17, this).id)
    },
    ondrag: function (t, i) {
      if (this._lZ) {
        XN(t), this[tC] = i[bd](t), this.invalidate();
        var n = new sU(i, sU.SELECT_START, t, i[Rn]);
        i.onInteractionEvent(n)
      }
    },
    enddrag: function (t, i) {
      if (this._lZ) {
        this._gJTimer && (clearTimeout(this._gJTimer), this[iC] = null), this._gJ(!0), this.destroy(i);
        var n = new sU(i, sU[nC], t, i[Rn]);
        i.onInteractionEvent(n)
      }
    },
    onpinch: function (t, i) {
      this._lZ && this[ws](t, i)
    },
    _17: function (t, i) {
      t.strokeStyle = sB.SELECTION_RECTANGLE_STROKE_COLOR, t[Ba] = sB.SELECTION_RECTANGLE_FILL_COLOR, t[Pa] = sB.SELECTION_RECTANGLE_STROKE / i;
      var n = this._lZ.x,
        e = this._lZ.y;
      t[cr](n, e, this._end.x - n, this[tC].y - e), t.fill(), t.stroke()
    },
    invalidate: function () {
      this[qb] ? this[yS].invalidate() : (this[qb] = !0, this[iC] = setTimeout(this._gJ.bind(this), 100))
    },
    _gJ: function (t) {
      if (this[qb] = !1, this[iC] = null, !this._lZ || IN && !t) this[yS][Rl]();
      else {
        var i = Math.min(this._lZ.x, this[tC].x),
          n = Math.min(this._lZ.y, this[tC].y),
          e = Math.abs(this._lZ.x - this._end.x),
          s = Math.abs(this._lZ.y - this[tC].y);
        if (e && s) {
          var h = [],
            r = this[qy][Wa],
            a = this.graph[eC];
          if (this[qy][sC](function (t) {
              t._jC && this[qy][hC](t.$data) && this.inRectangle(i, n, e, s, t, r, a) && h[M](t[Ki])
            } [Ye](this)), this.graph[Rn].set(h), this.topCanvas[Rl](), !t) {
            var o = new sU(this.graph, sU[rC], null, this[qy][Rn]);
            this[qy][sA](o)
          }
        } else this[qy][Rn].clear()
      }
    },
    inRectangle: function (t, i, n, e, s, h, r) {
      var a = s.getBounds();
      return !!bB(t, i, n, e, a.x, a.y, a[Yt], a[Wt]) || (r = r || sB[Qk]) != OF.RECTANGLE_SELECTION_MODE_CONTAIN && function (t, i, n, e, s, h) {
        t -= s.$x, i -= s.$y;
        var r = s._h0[qt](t, i, n, e);
        if (!r) return !1;
        t = r.x * h, i = r.y * h, n = r[Yt] * h, e = r[Wt] * h, n = Math[or](n) || 1, e = Math[or](e) || 1;
        var a = DF(),
          o = a.canvas;
        o[Yt] < n || o[Wt] < e ? (o[Yt] = n, o[Wt] = e) : (a[aC](1, 0, 0, 1, 0, 0), a[oC](0, 0, n, e)), a[aC](1, 0, 0, 1, -t - s.$x * h, -i - s.$y * h), a[Wa](h, h), s._kL(a, 1);
        var f = FF(a, 0, 0, n, e);
        if (!f) return !1;
        for (var c = (f = f.data)[N] / 4; 0 < c--;)
          if (0 < f[4 * c - 1]) return !0;
        return !1
      }(t, i, n, e, s, h)
    },
    destroy: function (t) {
      this._lZ = null, t[uI] = null, this[qk] && (this.topCanvas[fC](this[qk]), delete this[qk], this[yS][Rl]())
    }
  };
  var ZW = EN({
    super: XW,
    onstart: null,
    startdrag: null,
    ondrag: null,
    enddrag: null,
    accept: function (t, i, n) {
      return !1 !== n[cC]
    },
    oncontextmenu: function (t, i) {
      i.popupmenu || XN(t)
    },
    onstart2: function (t, i) {
      XW[_][ds].apply(this, arguments)
    },
    startdrag2: function (t, i) {
      t[EM] || (i[uC] && i[uC][_C] instanceof Function && i[uC][_C](), XW[_][Es].apply(this, arguments))
    },
    ondrag2: function (t, i) {
      XW.prototype[ps][d](this, arguments)
    },
    enddrag2: function (t, i) {
      XW[_][ws].apply(this, arguments)
    }
  });

  function zW(t) {
    vN(this, zW, arguments), this[fk] = BN ? 8 : 4, this._rotateHandleLength = BN ? 30 : 20
  }

  function KW(t, i) {
    var n = new yB;
    return n[Dr](ZG.call(t, {
      x: i.x,
      y: i.y
    })), n[Dr](ZG[p](t, {
      x: i.x + i[Yt],
      y: i.y
    })), n.addPoint(ZG.call(t, {
      x: i.x + i[Yt],
      y: i.y + i[Wt]
    })), n[Dr](ZG[p](t, {
      x: i.x,
      y: i.y + i.height
    })), n
  }

  function JW(t) {
    this[qy] = t
  }

  function QW() {}

  function qW(t) {
    this[qy] = t
  }

  function tU(t) {
    this.graph = t
  }

  function iU(t) {
    this._k3 = t, this.action = function (t) {
      if (this._lV && (this._isFrameTimer ? (cancelAnimationFrame(this._lV), this[fL] = null) : clearTimeout(this._lV), this._lV = null), !0 !== t && !1 !== t) return t ? void(this._lV = setTimeout(function () {
        this._k3(), this._lV = null
      } [Ye](this), t)) : (this[fL] = !0, void(this._lV = requestAnimationFrame(function () {
        this._k3(), this._lV = null, this._isFrameTimer = null
      } [Ye](this))));
      this._k3()
    }
  }

  function nU(t) {
    this[qy] = t
  }

  function eU(t) {
    this.graph = t
  }

  function sU(t, i, n, e, s) {
    this[pi] = t, this[Oi] = dL, this.kind = i, this[U] = n, this[Ki] = e, this[Dn] = s
  }

  function hU(t) {
    this._4M = {}, this._lW = t, this._lW._1I[Xi](this[vL], this), this.currentMode = OF[bL]
  }
  kW = Math.PI / 4, zW.prototype = {
    _f0: !1,
    _f1: !1,
    onDataPropertyChange: function (t) {
      this[qy].callLater(function () {
        this[lC]()
      }, this)
    },
    ondblclick: function (t, i) {
      this[GS] && this.destroy(i)
    },
    destroy: function (t) {
      t[uI] = null, delete this._dA, delete this[Om], delete this._o92, delete this[Mk], delete this._kO, delete this[dC], delete this._f1, delete this._f0, delete this[vC], bN(this, zW, Rs, arguments)
    },
    _dA: null,
    _kO: null,
    _8W: function (t) {
      this._dA = t;
      var i = this._dA.x,
        n = this._dA.y,
        e = this._dA[Yt],
        s = this._dA.height;
      if (this.element instanceof PY && this[GS][cv], this._f1) {
        var h = [];
        h[M]({
          x: i,
          y: n,
          p: EB[ai],
          cursor: bC,
          rotate: 5 * kW
        }), h[M]({
          x: i + e / 2,
          y: n,
          p: EB.CENTER_TOP,
          cursor: yC,
          rotate: 6 * kW
        }), h[M]({
          x: i + e,
          y: n,
          p: EB.RIGHT_TOP,
          cursor: gC,
          rotate: 7 * kW
        }), h[M]({
          x: i,
          y: n + s / 2,
          p: EB[li],
          cursor: EC,
          rotate: 4 * kW
        }), h[M]({
          x: i,
          y: n + s,
          p: EB.LEFT_BOTTOM,
          cursor: gC,
          rotate: 3 * kW
        }), h[M]({
          x: i + e,
          y: n + s / 2,
          p: EB.RIGHT_MIDDLE,
          cursor: EC,
          rotate: 0
        }), h.push({
          x: i + e / 2,
          y: n + s,
          p: EB[vi],
          cursor: yC,
          rotate: 2 * kW
        }), h[M]({
          x: i + e,
          y: n + s,
          p: EB.RIGHT_BOTTOM,
          cursor: bC,
          rotate: kW
        }), this._kO = h
      }
      this._f0 ? this[dC] = {
        x: i + e / 2,
        y: n,
        cursor: xC
      } : this[dC] = null, this[Rl]()
    },
    _f3: function (t, i, n, e) {
      t[Ua]();
      var s = (this[fk] - 1) / e;
      t[cr](i - s, n - s, 2 * s, 2 * s), t[Pa] = 1 / e, t[jf] = [], t[Da] = RI, t[Ba] = "rgba(255, 255, 255, 0.8)", t[Za](), t[Va]()
    },
    _64: function (t, i, n, e, s, h) {
      s = s || this[fk], h = h || pC, t.beginPath(), s /= e, t.arc(i, n, s, 0, 2 * Math.PI, !1), t[Pa] = 1 / e, t[jf] = [], t[Da] = RI, t[Ba] = h, t[Za](), t[Va]()
    },
    _jD: function (t, i) {
      var n = {
        x: t -= this[GS].x,
        y: i -= this[GS].y
      };
      return this.element[kt] && cW(n, -this[GS][kt]), n
    },
    doDraw: function (i, n) {
      if (this._dA) {
        if (i[Ga](), i.translate(this[GS].x, this.element.y), this.element[kt] && i.rotate(this.element.rotate), this._rotatePoint) {
          this._64(i, 0, 0, n, 3, TC);
          var t = this[dC].x,
            e = this[dC].y - this[mC] / n;
          i[Ua](), i.moveTo(t, this._rotatePoint.y), i[ja](t, e), i[Pa] = 1 / n, i.strokeStyle = Ok, i[Za](), this._64(i, t, e, n)
        }
        if (this._kO) {
          var s = this._dA.x,
            h = this._dA.y,
            r = this._dA[Yt],
            a = this._dA.height;
          i.beginPath(), i[cr](s, h, r, a), i[Pa] = 1 / n, i[jf] = [2 / n, 3 / n], i[Da] = Ok, i[Za](), aN(this._kO, function (t) {
            this._f3(i, t.x, t.y, n)
          }, this)
        }
        i[Ka]()
      }
    },
    _o94: function () {
      if (this[kk]() && this[GS]) {
        var t = this.graph[As](this.element);
        this[Om] = t.body;
        var i = KW(this._oAody, this[Om]._kG),
          n = KW(this[Om], this[Om]._8O);
        this._insets = new gB(i.y - n.y, i.x - n.x, n[Ft] - i[Ft], n.right - i.right), this._8W(n)
      }
    },
    _oAU: function (t, i, n) {
      return i[wC](t)
    },
    _oAV: function (t, i) {
      return (!(t instanceof PY) || !t[cv]) && i[OC](t)
    },
    _dB: function (t, i) {
      return t instanceof wY && i.isEditable(t)
    },
    onstart: function (t, i) {
      if (i[vO]) {
        if (!t[EM]) {
          var n = i[As](t),
            e = t[Os]();
          if (e != this[GS]) {
            if (this[GS]) {
              if (this._h4(t, i)) return void(t[EM] = !0);
              this[Rs](i)
            }
            if (e && !e._editting && this._dB(e, i)) {
              var s = this[AC](e, i, n),
                h = this._oAV(e, i, n);
              (s || h) && (this.setCurrentElement(e, !0), this.addDrawable(), this._f1 = s, this._f0 = h, this._o94())
            }
          }
        }
      } else this.element && this[Rs](i)
    },
    onrelease: function (t, i) {
      this.element && (this[Mk] = !0, this[jS](), i[gA](function () {
        this[lC]()
      }, this))
    },
    _o92: null,
    _h4: function (t, i) {
      var n = i[bd](t);
      n = this._jD(n.x, n.y);
      var e, s = i.scale,
        h = this.handlerSize / s;
      if (this[dC]) {
        var r = this[dC].x,
          a = this[dC].y - this._rotateHandleLength / s;
        if (rB(n.x, n.y, r, a) < h) return this[dC]
      }
      if (this._kO && this._kO.length) return aN(this._kO, function (t, i) {
        if (rB(n.x, n.y, t.x, t.y) < h) return e = t, !1
      }, this), e
    },
    onmousemove: function (t, i) {
      if (this.element) {
        var n = this._h4(t, i);
        if (n)
          if (n != this[dC] && this[GS][kt]) {
            var e = n[kt] + this[GS][kt];
            i[uI] = function (t) {
              t %= 2 * Math.PI;
              var i = Math[or](t / kW);
              return 0 == i || 4 == i ? "ew-resize" : 1 == i || 5 == i ? "nwse-resize" : 2 == i || 6 == i ? "ns-resize" : gC
            }(e)
          } else i[uI] = n[uI];
        else i[uI] = null
      }
    },
    startdrag: function (t, i) {
      if (this[GS] && (this[fC](), this[Mk] && (this[ys] = this._h4(t, i), this[ys]))) {
        var n;
        if (t[EM] = !0, this._o92 == this._rotatePoint) return this[ys][nM] = i.toLogical(t), this[ys][kt] = this.element.rotate || 0, (n = new sU(i, sU[IC], t, this.element))[Li] = this.element[kt], void i[sA](n);
        (n = new sU(i, sU.RESIZE_START, t, this.element))[Dk] = this._o92, i.onInteractionEvent(n)
      }
    },
    _78: function (t, r, a, i, n, e) {
      var s = this._dA,
        o = s.x,
        f = s.y,
        h = s[Yt],
        c = s.height;
      e && (i != h ? n = i * c / h : i = n * h / c);
      var u = t[Gd].segments,
        _ = i / h,
        l = n / c,
        d = -o * _ + r,
        v = -f * l + a;
      u[Mt](function (t) {
        if (t[Oi] != OF[vf]) {
          var i = t[Ns];
          if (i && i[N])
            for (var n = 0, e = i[N]; n < e; n += 2) {
              var s = i[n],
                h = i[n + 1];
              i[n] = (s - o) * _ + r - d, i[n + 1] = (h - f) * l + a - v
            }
        }
      }), this._dA.set(r - d, a - v, i, n), t.setLocation(t.x + d, t.y + v), t[tb]()
    },
    _o96: function (t, i, n, e, s, h) {
      this._dA.set(i, n, e, s), t.minSize = {
        x: i,
        y: n,
        width: e,
        height: s
      }
    },
    _4L: function (t, i, n, e, s) {
      if (this[GS] instanceof PY && this.element.expanded) return this[SC](this[GS], t, i, n, e, s);
      if (this[GS] instanceof AY) return this._78(this.element, t, i, n, e, s);
      var h = this._oAody instanceof iW;
      if (!h && s) {
        var r = this._dA,
          a = this[Om][MC];
        n != r[Yt] ? e = n * a.height / a[Yt] : n = e * a.width / a[Wt]
      }
      var o = this[GS].anchorPosition,
        f = new lB(n - this[vC][Kt] - this._insets.right, e - this._insets.top - this[vC].bottom);
      if (f.width < 1 && (n = this[vC].left + this[vC].right + 1, f.width = 1), f[Wt] < 1 && (e = this._insets.top + this[vC][Ft] + 1, f[Wt] = 1), h ? this[GS][Fv](WY.LABEL_SIZE, f) : this[GS][Pl] = f, o) {
        var c = (_ = AB(o, n, e)).x + t - (this[Om][py] || 0),
          u = _.y + i - (this[Om][xy] || 0);
        this._dA.set(t - c, i - u, n, e), this[GS].rotate && (c = (_ = cW({
          x: c,
          y: u
        }, this[GS][kt])).x, u = _.y), this[GS].x += c, this[GS].y += u
      } else {
        var _;
        c = this._dA.x * n / this._dA[Yt] - t, u = this._dA.y * e / this._dA[Wt] - i, this._dA.set(t + c, i + u, n, e), this.element[kt] && (c = (_ = cW({
          x: c,
          y: u
        }, this.element.rotate)).x, u = _.y), this[GS].x -= c, this[GS].y -= u
      }
    },
    ondrag: function (t, i) {
      if (this.element && this._o92) {
        if (this._o92 == this[dC]) {
          var n = i.toLogical(t),
            e = (h = n.x, r = n.y, a = this.element.x, o = this[GS].y, f = this[ys][nM].x, c = this[ys][nM].y, nG(a, o, h, r) - nG(a, o, f, c));
          e += this[ys][kt] || 0, t.shiftKey && (e = Math[or](e / Math.PI * 4) * Math.PI / 4);
          var s = this[GS][kt];
          return this[GS][kt] = e % (2 * Math.PI), (d = new sU(i, sU[kC], t, this.element))[Ii] = s, d[Li] = this[GS][kt], void i[sA](d)
        }
        var h, r, a, o, f, c, u = t.dx,
          _ = t.dy,
          l = i[Wa];
        u /= l, _ /= l, this[GS][kt] && (cW(n = {
          x: u,
          y: _
        }, -this.element[kt]), u = n.x, _ = n.y);
        var d, v = this[ys].p,
          b = this._dA,
          y = b.x,
          g = b.y,
          E = b[Yt],
          x = b[Wt];
        v[ti] == xB ? E <= u ? (y += E, E = u - E || 1) : (y += u, E -= u) : v[ti] == pB && (E <= -u ? y -= E = -u - E || 1 : E += u), v[ii] == TB ? x <= _ ? (g += x, x = _ - x || 1) : (g += _, x -= _) : v[ii] == mB && (x <= -_ ? g -= x = -_ - x || 1 : x += _), this._4L(y, g, E, x, t[PM]), (d = new sU(i, sU[CC], t, this.element))[Dk] = this[ys], i[sA](d)
      }
    },
    enddrag: function (t, i) {
      if (this[GS] && this[ys]) {
        var n;
        if (this[ys] == this[dC]) return (n = new sU(i, sU[LC], t, this.element)).value = this[GS][kt], void i[sA](n);
        (n = new sU(i, sU[RC], t, this[GS]))[Dk] = this._o92, i[sA](n)
      }
    }
  }, dN(zW, MW), wF[PC] = zW, JW[_] = {
    onstart2: function (t, i) {
      this[ds](t, i)
    },
    onstart: function (t, i) {
      if (!t[EM]) {
        var n = t[Os]();
        if (n && !i[hC](n) && (n = null), n && lF(t)) {
          i[NA](n);
          var e = new sU(i, sU[DC], t, i[Rn]);
          i.onInteractionEvent(e)
        } else n && i.selectionModel[uk](n) || (n ? (i[NC](n), i[BC](n)) : i.setSelection(null), e = new sU(i, sU[DC], t, i.selectionModel), i[sA](e))
      }
    },
    onkeydown: function (t, i) {
      27 != t.keyCode ? lF(t) && 65 == t[R_] && (i[FC](), VN(t)) : i[GC]()
    }
  }, sB.TOOLTIP_DURATION = 0, sB[$C] = 1e3, QW.CLASS_NAME = YC, QW[WC] = 0, QW[UC] = 15, ZB(nt + QW.CLASS_NAME, {
    "user-select": ar,
    "background-color": HC,
    overflow: bo,
    "box-shadow": "0 5px 10px rgba(136, 136, 136, 0.5)",
    color: Pm,
    "pointer-events": ar,
    border: VC,
    padding: jC,
    display: MI,
    position: ml
  }), QW.getInstance = function () {
    var t = QW[XC];
    return t || (QW.instance = new QW)
  }, QW[ZC] = function (t, i, n) {
    QW.getInstance()[ZC](t, i, n)
  }, QW.hide = function () {
    QW[zC]().hide()
  }, QW.prototype = {
    getTooltipElement: function () {
      var t = this._mU;
      return t || ((t = x.createElement($n))[R] = QW[KC], this._mU = t, x[yo].appendChild(t)), t
    },
    update: function (t, i) {
      if (this.isShowing()) {
        var n = VO == i;
        t && !n && (t = t.replace(/\n/g, JC));
        var e = this.getTooltipElement();
        n ? e[QC] = t || "" : e[HA] = t || "", s = e, h = this[qC].x + QW[WC], r = this[qC].y + QW[UC], a = x[ul], o = new yB(u[CA], u[ld], a[Qn] - 2, a[wd] - 2), f = s.offsetWidth, c = s.offsetHeight, h + f > o.x + o.width && (h = o.x + o[Yt] - f), r + c > o.y + o[Wt] && (r = o.y + o.height - c), h < o.x && (h = o.x), r < o.y && (r = o.y), s[Yn].left = h + sa, s.style.top = r + sa
      }
      var s, h, r, a, o, f, c
    },
    setTooltip: function (t, i) {
      if (!t || !t.content) return this[qC] = null, this._mU && (this._mU[Yn].display = ar), void(this._o97 = Date.now());
      this._o97 = null, this._info = t, this[tL]()[Yn].display = "", this[iL](this[qC][nL], this[qC].type), isNaN(i) && (i = sB.TOOLTIP_DURATION), i && this.startTimer(this.setTooltip[Ye](this, !1), i)
    },
    _o97: null,
    _lV: null,
    stopTimer: function () {
      this._lV && (clearTimeout(this._lV), this._lV = null)
    },
    startTimer: function (t, i) {
      this.stopTimer(), this._lV = setTimeout(function (t) {
        this._lV = null, t()
      }.bind(this, t), i)
    },
    show: function (t, i, n) {
      this[kk]() || this[eL] && Date.now() - this._o97 < 1e3 ? this[sL](t, n) : (isNaN(i) && (i = sB[$C]), i ? this.startTimer(this.setTooltip[Ye](this, t, n), i) : this.setTooltip(t, n))
    },
    isShowing: function () {
      return this._mU && ar !== this._mU[Yn][sl]
    },
    hide: function () {
      this[hL](), this[kk]() && this[sL](!1)
    }
  }, qW.prototype = {
    onstart: function (t, i) {
      this.destroy(i)
    },
    _jX: null,
    onmousemove: function (t, i) {
      if (i[rL]) {
        var n = t[Os](),
          e = n ? i.getTooltip(n, t) : null;
        e ? QW[ZC]({
          target: n,
          content: e,
          type: n.tooltipType,
          x: t[_d],
          y: t[dd]
        }, i[aL], i[oL]) : QW[_C]()
      }
    },
    destroy: function (t) {
      QW.hide()
    }
  }, tU.prototype = {
    destroy: function (t) {
      this.delayAction && (this[cL] = null)
    },
    onmousewheel: function (t, i) {
      if (!1 !== i[uL] && t[$k]) {
        if (wF[cS](t), i[bA](), i[cI]) {
          var n = this[cL];
          n = n || (this.delayAction = new iU(function () {
            i[yI](!1)
          })), i[yI](!0), n[_L](100)
        }
        i[lL](t, t.delta, !1)
      }
    }
  }, nU[_] = {
    onclick: function (t, i) {
      i[lL](t, !lF(t))
    }
  }, eU[_] = {
    onclick: function (t, i) {
      i[lL](t, lF(t))
    }
  }, dN(sU, SB), sU[lk] = yL, sU[gL] = EL, sU.ELEMENT_MOVE_END = xL, sU[eA] = pL, sU.ELEMENT_REMOVED = TL, sU[mL] = wL, sU.POINT_MOVING = OL, sU[Vk] = AL, sU[Pk] = IL, sU.POINT_REMOVE = SL, sU.RESIZE_START = ML, sU.RESIZING = kL, sU[RC] = CL, sU[IC] = LL, sU[kC] = RL, sU[LC] = PL, sU[gk] = DL, sU[NL] = BL, sU[KM] = FL, sU[QM] = GL, sU[DC] = YM, sU.SELECT_START = $L, sU[rC] = YL, sU.SELECT_END = WL, sU.LONG_CLICK = UL, qN(hU[_] = {
    _o98: function (t) {
      if (this[HL]) switch (t[Ti]) {
        case BB[vn]:
          this._interactionSupport._4P(t.data);
          break;
        case BB.KIND_CLEAR:
          this[HL]._7E(t.data)
      }
    },
    destroy: function () {
      delete this._lW, delete this._4M, this._interactionSupport && (this._interactionSupport._iZ(), delete this[HL])
    },
    _lW: null,
    _4M: null,
    defaultMode: null,
    _h5: function (t, i, n) {
      this._4M[t] = new CW(i, n), t == this[VL] && this[HL]._7G(i)
    },
    addCustomInteraction: function (t) {
      this._interactionSupport._9(t)
    },
    removeCustomInteraction: function (t) {
      this[HL]._5(t)
    },
    _nW: function (t) {
      return this._4M[t] || rU[t]
    }
  }, {
    defaultCursor: {
      get: function () {
        if (this[jL]) return this.currentInteractionMode[_I]
      }
    },
    currentMode: {
      get: function () {
        return this._oBurrentMode
      },
      set: function (t) {
        this[XL] != t && (this._oBurrentMode, this._interactionSupport || (this._interactionSupport = new _F(this._lW)), this[XL] = t, this.currentInteractionMode = this._nW(this._oBurrentMode), this._lW[uI] = this[_I], this.currentInteractionMode ? this._interactionSupport._7G(this.currentInteractionMode.getInteractionInstances(this._lW)) : this._interactionSupport._7G([]))
      }
    }
  });
  var rU = {};

  function aU(t) {
    this[qy] = t
  }
  sB[ZL] = function (t, i, n) {
    var e = new CW(i, n);
    rU[t] = e
  }, OF[zL] = KL, OF.INTERACTION_MODE_DEFAULT = PS, OF.INTERACTION_MODE_SELECTION = BM, OF[JL] = QL, OF[qL] = tR, OF[iR] = nR, OF[eR] = sR, OF[hR] = rR, OF.INTERACTION_MODE_CREATE_LINE = aR, sB.registerInteractions(OF[zL], [JW, HW, tU, WW, $W, qW, ZW]), sB[ZL](OF[iR], [YW, BW, JW, HW, tU, WW, qW]), sB[ZL](OF[eR], [YW, VW, JW, RW, HW, tU, WW, qW]), sB[ZL](OF[hR], [YW, DW, JW, HW, tU, WW, qW]), sB[ZL](OF[oR], [NW, JW, HW, tU, WW, qW]), sB.registerInteractions(OF.INTERACTION_MODE_DEFAULT, [YW, VW, zW, JW, UW, HW, tU, WW, $W, qW, ZW]), sB.registerInteractions(OF.INTERACTION_MODE_SELECTION, [YW, VW, zW, JW, UW, XW, HW, tU, WW, $W, qW]), sB[ZL](OF[JL], [tU, WW, nU], fF), sB[ZL](OF[qL], [tU, WW, eU], cF), wF[fR] = HW, wF[cR] = JW, wF.MoveInteraction = UW, wF[uR] = tU, wF[_R] = $W, wF[lR] = WW, wF[dR] = qW, wF[vR] = XW, wF.RectangleSelectionInteractionByRightButton = ZW, wF.PointsInteraction = VW, (wF[bR] = aU)[_] = {
    getNodeBounds: function (t) {
      return this[qy][yR](t)
    },
    isLayoutable: function (t, i) {
      return this[qy][mI](t) && !1 !== t[gR]
    },
    getLayoutResult: function (t) {},
    updateLocations: function (t, i, n, e, s) {
      if (!0 !== i) {
        for (var h in t) {
          var r = t[h];
          r[ER][BA](r.x, r.y)
        }
        s && s.call(this, t)
      } else {
        if (this.animate || (this[xR] = new wU), n && (this.animate[IS] = n), e && (this[xR].animationType = e), this[xR][pR] = t, s) {
          var a = s,
            o = this;
          s = function () {
            a[p](o, t)
          }
        }
        this.animate[nM](s)
      }
    },
    _h7: function (t) {
      var i, n, e, s = null;
      t && (i = t[TR], s = t[Qy], n = t.duration, e = t[MS]);
      var h = this[mR](t);
      return !!h && (this[wR](h, i, n, e, s), h)
    },
    doLayout: function (t, i) {
      if (!this[qy] || !0 === i) return this._h7(t);
      this.graph[gA](function () {
        this._h7(t)
      }, this)
    }
  }, OF[OR] = 110, OF.DIRECTION_LEFT = 120, OF[AR] = 130, OF[IR] = 210, OF.DIRECTION_TOP = 220, OF[SR] = 230, OF[MR] = 111, OF[kR] = 112, OF[CR] = 121, OF[LR] = 122, OF[RR] = 211, OF.DIRECTION_BOTTOM_RIGHT = 212, OF[PR] = 221, OF[DR] = 222;
  var oU = NR,
    fU = BR;

  function cU(t) {
    return 100 <= t && t < 200
  }

  function uU(t) {
    this[qy] = t
  }
  OF.LAYOUT_TYPE_EVEN = oU, OF[FR] = GR, OF.LAYOUT_TYPE_EVEN_VERTICAL = $R, OF[YR] = fU, wF[WR] = cU, uU.prototype = {
    hGap: 50,
    vGap: 50,
    parentChildrenDirection: 210,
    layoutType: oU,
    defaultSize: {
      width: 50,
      height: 60
    },
    getNodeSize: function (t) {
      if (this[qy]._9A[ke]) {
        var i = this[qy][As](t);
        if (i) return i._h0
      }
      return t.image && t[Uo][oo] ? {
        width: t[Uo].bounds[Yt],
        height: t.image.bounds[Wt]
      } : this[UR]
    },
    _dZ: function (t, i) {
      var n = t.id;
      if (!(n in this[HR]) && this[VR](t)) {
        var e, s = this.getNodeSize(t);
        e = s instanceof yB ? [-s.x, -s.y] : [s.width / 2, s[Wt] / 2], t[jR];
        var h = i ? this[HR][i.id] : this[XR];
        this[HR][n] = new _U(this, this[ZR](t), this[zR](t), this[KR](t), t.parentChildrenDirection, h, t, s.width, s[Wt], e)
      }
    },
    getHGap: function (t) {
      return t && WN(t[JR]) ? t[JR] : this[JR]
    },
    getVGap: function (t) {
      return t && WN(t.vGap) ? t[QR] : this[QR]
    },
    getLayoutType: function (t) {
      return t && t[qR] ? t[qR] : this.layoutType
    },
    _o9T: null,
    _oBA: null,
    _mB: function () {
      this[HR] = null, this[XR] = null
    },
    compareFn: null,
    getLayoutResult: function (t) {
      var i, n, e, s, h = this[qy];
      t instanceof Object && (i = t.x, n = t.y, h = t.root || this[qy], e = t.bounds, s = t.undirected), this._o9T = {}, this[XR] = new _U(this), this[XR]._nY(this[JR], this[QR], this.parentChildrenDirection, this[qR]);
      var r = {};
      return AU(h, this._dZ, this, !1, s) && (this[XR]._h7(i || 0, n || 0, r), e && e.set(this[XR].x, this._oBA.y, this[XR][Yt], this[XR].height)), this._mB(), r
    },
    doLayout: function (t, i) {
      if (WN(t)) {
        var n = t,
          e = 0;
        WN(i) && (e = i), t = {
          x: n,
          y: e
        }, i = !0
      }
      return bN(this, uU, tP, [t, i])
    }
  }, dN(uU, aU);
  var _U = function (t, i, n, e, s, h, r, a, o, f) {
    this._iA = t, this._nL = i || 0, this._nM = n || 0, this[qR] = e, this[jR] = s, (this[iP] = h) && h._iB(this), this.node = r, this._fX = a, this._e1 = o, this[nP] = f
  };

  function lU(t) {
    this[qy] = t, this.currentMovingNodes = {}
  }

  function dU(t, i, n, e) {
    this[qy] = t, WN(i) && (this.radius = i), WN(n) && (this.gap = n), WN(e) && (this[CP] = e)
  }
  _U[_] = {
    _iA: null,
    _nY: function (t, i, n, e) {
      this._nL = t, this._nM = i, this[jR] = n, this[qR] = e
    },
    _9B: function () {
      this._gY = []
    },
    _nL: 0,
    _nM: 0,
    _gY: null,
    _fX: 0,
    _e1: 0,
    layoutType: null,
    parentChildrenDirection: null,
    _iB: function (t) {
      this._gY || (this._gY = []), this._gY.push(t)
    },
    _e2: function (i, n, t, e, s) {
      var h = new yB;
      return t(this._gY, function (t) {
        t._49(i, n), h.add(t), e ? i += t[Yt] + this._nL : n += t[Wt] + this._nM
      }, this), h
    },
    _9C: function (n, e, t, s, i) {
      var h, r = s ? this._nL : this._nM,
        a = s ? this._nM : this._nL,
        o = s ? "width" : Wt,
        f = s ? "height" : Yt,
        c = s ? "_fX" : eP,
        u = s ? "_e1" : sP,
        _ = s ? "hostDX" : hP,
        l = s ? "hostDY" : rP,
        d = new yB,
        v = 0,
        b = 0,
        y = [],
        g = 0,
        E = 0;
      t(this._gY, function (t) {
        var i = b <= E;
        t[aP] = i ? s ? 120 : 220 : s ? 110 : 210, t._49(n, e), i ? (y.push(t), v = Math.max(v, t[o]), b += t[f] + a) : ((h = h || [])[M](t), g = Math.max(g, t[o]), E += t[f] + a)
      }, this), b -= a, E -= a;
      var x = Math.max(b, E),
        p = r,
        T = 0;
      this[ER] && (i && (p += this[c] + r, x > this[u] ? this[l] = (x - this[u]) / 2 : T = (this[u] - x) / 2), this[_] = v + p / 2 - this[c] / 2);
      var m, w = T;
      return aN(y, function (t) {
        s ? t[Fy](v - t[o], w) : t.offset(w, v - t[o]), w += a + t[f], d.add(t)
      }, this), h && (w = T, m = v + p, aN(h, function (t) {
        s ? t.offset(m, w) : t.offset(w, m), w += a + t[f], d.add(t)
      }, this)), d
    },
    offset: function (t, i) {
      this.x += t, this.y += i, this[oP] += t, this[fP] += i, this._88(t, i)
    },
    _oBB: function (t, i) {
      return 2 * this.cx - t - i - t
    },
    _oBD: function (t, i) {
      return 2 * this.cy - t - i - t
    },
    _nO: function (t) {
      if (this._gY && 0 != this._gY[N]) {
        if (t) return this[ER] && (this[oP] += this._oBB(this[oP], this._fX)), void aN(this._gY, function (t) {
          t[Fy](this[cP](t.x, t[Yt]), 0)
        }, this);
        this[ER] && (this.nodeY += this[uP](this[fP], this._e1)), aN(this._gY, function (t) {
          t[Fy](0, this[uP](t.y, t[Wt]))
        }, this)
      }
    },
    _88: function (i, n) {
      this._gY && aN(this._gY, function (t) {
        t[Fy](i, n)
      }, this)
    },
    _49: function (t, i) {
      if (this.x = t || 0, this.y = i || 0, this._gY && 0 != this._gY.length) {
        if (this._iA && this._iA[_P]) {
          var n = this._iA[_P];
          this._gY.sort(function (t, i) {
            return n(t.node, i[ER])
          })
        }
        this._1X(this.x, this.y, this[qR])
      } else this.node && (this.width = this._fX, this[Wt] = this._e1, this[oP] = this.x, this[fP] = this.y)
    },
    _8A: function (i) {
      if (this.node) {
        var t = this._o9nchorLocation,
          n = t[0],
          e = t[1];
        i[this[ER].id] = {
          node: this[ER],
          x: this.nodeX + n,
          y: this[fP] + e,
          left: this[oP],
          top: this.nodeY,
          width: this._fX,
          height: this._e1
        }
      }
      this._gY && aN(this._gY, function (t) {
        t._8A(i)
      }, this)
    },
    _h7: function (t, i, n) {
      this._49(t, i), this._8A(n)
    },
    _1X: function (t, i, n) {
      var e, s = t,
        h = i;
      !this[jR] && this.parentBounds && (this.parentChildrenDirection = this[aP] || this[iP][jR]);
      var r = this[jR],
        a = cU(r);
      if (this[ER]) {
        var o = 120 == r || 122 == r || 121 == r || 220 == r || 221 == r || 222 == r;
        (e = 130 == r || 230 == r) || (a ? t += this._fX + this._nL : i += this._e1 + this._nM)
      }
      var f, c, u, _ = this.node && this[ER].layoutReverse ? fN : aN,
        l = 0,
        d = 0;
      (f = n == fU ? this._9C(t, i, _, !a, e) : (c = n == oU ? !a : GR == n, this._e2(t, i, _, c, e))) && !f[yn]() && (l = f.width, d = f.height, this.add(f)), this[ER] && (this.nodeX = s, this[fP] = h, this.hostDX !== k || this[hP] !== k ? (this[oP] += this.hostDX || 0, this.nodeY += this.hostDY || 0) : (u = 210 == r || 220 == r || 120 == r || 110 == r ? 1 : 212 == r || 222 == r || 122 == r || 112 == r ? 0 : 2, a ? (1 == u ? this.nodeY += d / 2 - this._e1 / 2 : 2 == u && (this.nodeY += d - this._e1), h > this.nodeY && this[Fy](0, h - this[fP])) : (1 == u ? this.nodeX += l / 2 - this._fX / 2 : 2 == u && (this.nodeX += l - this._fX), s > this.nodeX && this[Fy](s - this[oP], 0))), this[Id](this[oP], this[fP], this._fX, this._e1), o && this._nO(a))
    },
    node: null,
    uiBounds: null
  }, dN(_U, yB), lU[_] = {
    layoutDatas: null,
    isMovable: function (t) {
      return !this.currentMovingNodes[t.id]
    },
    _79: !1,
    _3S: function () {
      this._79 = !0, this.graph._1I[Xi](this[lP], this), this[qy]._1C[Xi](this._2A, this)
    },
    _1P: function () {
      this._79 = !1, this[qy]._1I[Zi](this._o9A, this), this[qy]._1C[Zi](this._2A, this)
    },
    invalidateFlag: !0,
    invalidateLayoutDatas: function () {
      this[qb] = !0
    },
    resetLayoutDatas: function () {
      return this[qb] = !1, this.layoutDatas = function () {
        var e, s, h = {},
          r = [],
          a = 0,
          o = {},
          f = 0;
        this[qy][Mt](function (t) {
          if (this[VR](t))
            if (t instanceof wY) {
              var i = {
                node: t,
                id: t.id,
                x: t.x,
                y: t.y
              };
              for (this[dP] && this[dP](t, i), h[t.id] = i, r[M](i), a++, s = t.parent; s instanceof PY;) {
                var n = (e = e || {})[s.id];
                (n = n || (e[s.id] = {
                  id: s.id,
                  children: []
                }))[y][M](i), s = s.parent
              }
            } else t instanceof xY && !t[Ud]() && t[Wd] && t[gv] && (i = {
              edge: t
            }, o[t.id] = i, f++)
        }, this);
        var t = {};
        for (var i in o) {
          var n = o[i],
            c = n[ob],
            u = c[Wd],
            _ = c[gv],
            l = u.id + Wn + _.id,
            d = _.id + Wn + u.id;
          if (h[u.id] && h[_.id] && !t[l] && !t[d]) {
            var v = h[u.id],
              b = h[_.id];
            n[Fd] = v, n.to = b, t[l] = n, this[vP] && this.appendEdgeInfo(c, n)
          } else delete o[i], f--
        }
        return {
          groups: e,
          nodesArray: r,
          nodes: h,
          nodeCount: a,
          edges: o,
          edgeCount: f,
          minEnergy: this[bP](a, f)
        }
      }.call(this)
    },
    _2A: function (t) {
      sU[lk] == t.kind ? (this[yP] = {}, t[Dn][Mt](function (t) {
        this[yP][t.id] = t
      }, this)) : sU[bk] == t.kind && (this[yP] = {})
    },
    _o9A: function (t) {
      this[gP]()
    },
    isRunning: function () {
      return this[EP] && this[EP]._f4()
    },
    getLayoutResult: function (t) {
      this.stop(), this[xP]();
      for (var i = this[pP](this[TP][mP] || 0, this[TP][wP] || 0), n = 0; n < i && !1 !== this[yk](!1); n++);
      var e = this.layoutDatas.nodes;
      return this[OP](), e
    },
    _mX: function () {
      return !1
    },
    step: function (t) {
      if (!1 === t) return this._mX(this[AP]);
      !this[qb] && this[TP] || this[xP]();
      var i = this._mX(t),
        n = this[TP][IP];
      for (var e in n) {
        var s = n[e],
          h = s[ER];
        this.isMovable(h) ? h.setLocation(s.x, s.y) : (s.x = h.x, s.y = h.y, s.vx = 0, s.vy = 0)
      }
      return i
    },
    onstop: function () {
      delete this.layoutDatas
    },
    start: function (t) {
      if (this[SP]()) return !1;
      this._79 || this._3S(), this[MP] || (this[MP] = function (t) {
        return this.step(t)
      } [Ye](this)), this.invalidateLayoutDatas(), this[EP] = new vF(this[MP]);
      var i = this;
      return this[EP]._lZ(function () {
        i[OP](), t && t()
      }), !0
    },
    stop: function () {
      this[EP] && (this[EP]._n3(), this[OP]())
    },
    getMaxIterations: function (t, i) {
      return Math.min(1e3, 3 * t + 10)
    },
    minEnergyFunction: function (t, i) {
      return 10 + Math.pow(t + i, 1.4)
    },
    resetGraph: function () {
      this._79 || this._3S(), this.resetLayoutDatas()
    },
    destroy: function () {
      this[kP](), this._1P()
    }
  }, dN(lU, aU), wF[LP] = dU;
  var vU = RP,
    bU = PP,
    yU = DP;
  OF.ANGLE_SPACING_PROPORTIONAL = vU, OF[NP] = bU, OF[BP] = FP, OF[GP] = yU, dU.prototype = {
    angleSpacing: vU,
    radiusMode: yU,
    gap: 4,
    radius: 50,
    startAngle: 0,
    _o9T: null,
    _oBA: null,
    _mB: function () {
      this[HR] = null, this[XR] = null
    },
    getLayoutResult: function (t) {
      var i, n = 0,
        e = 0,
        s = this[qy];
      t instanceof Object && (n = t.cx || 0, e = t.cy || 0, s = t[$P] || this[qy], i = t.bounds), this._o9T = {}, this._oBA = new gU(this);
      var h = {};
      return IU(s, this._dZ, this) && (this[XR]._gY && 1 == this[XR]._gY.length && (this[XR] = this[XR]._gY[0]), this._oBA._fZ(!0), this[XR]._6J(n, e, this.startAngle, h, i)), this._mB(), h
    },
    _dZ: function (t, i) {
      if (this[VR](t)) {
        var n = i ? this[HR][i.id] : this[XR];
        this[HR][t.id] = new gU(this, t, n)
      }
    },
    defaultSize: 40,
    getRadius: function (t, i, n) {
      return this.radius
    },
    getNodeSize: function (t, i, n) {
      if (this[qy]._9A._oAH) {
        var e = this[qy].getUI(t);
        if (e) return (e._h0[Yt] + e._h0.height) / 2
      }
      return this[UR]
    },
    getGap: function (t, i, n) {
      return this.gap
    },
    _3C: function (t, i, n) {
      return this[YP](t, i, n) + this.getGap(t, i, n)
    }
  };
  var gU = function (t, i, n) {
    this[WP] = t, i && (this._nS = i, this.id = i.id), n && (n._iB(this), n._nP = !1, this._mL = n._mL + 1)
  };
  iY = 2 * Math.PI, gU[_] = {
    _mI: 0,
    _mJ: 0,
    _lG: 0,
    _fY: 0,
    _e3: 0,
    _mL: 0,
    _nP: !0,
    _nQ: 0,
    _iC: 0,
    _gY: null,
    _nS: null,
    _iB: function (t) {
      this._gY || (this._gY = []), this._gY[M](t), t[Pi] = this
    },
    _iE: function (i) {
      this._mJ = (this._mJ + i) % iY, this._gY && (1 != this._gY.length ? (i = this._mJ + Math.PI, aN(this._gY, function (t) {
        t._iE(i)
      }, this)) : this._gY[0]._iE(this._mJ))
    },
    _9E: 0,
    _8C: function (t) {
      return this._nS && (this._iC = this[WP]._3C(this._nS, this._mL, this._nP) / 2), this._gY ? (this._iC, this._9E = this._gY.length, this._9E <= 2 || this[WP][UP] == bU ? function (t) {
        var i = this._9E,
          n = 2 * Math.PI / i,
          e = 0,
          s = t ? 0 : 1 < i ? -n / 2 : 0;
        return aN(this._gY, function (t) {
          t._mJ = s % iY, s += n, t._mI = n;
          var i = t._fZ();
          e < i && (e = i)
        }, this), [e, n]
      }.call(this, t) : function (e) {
        var n, t = this._gY[N],
          s = 0,
          h = 0;
        if (aN(this._gY, function (t) {
            var i = t._fZ();
            i < 1 && (i = 1), h += i, s < i && (s = i, n = t)
          }, this), 1 < t) {
          var r = 0,
            a = {},
            o = h / t / 3;
          h = 0, aN(this._gY, function (t) {
            var i = t._nQ;
            i < o && (i = o), a[t.id] = i, h += i
          }, this);
          var f = iY / h;
          aN(this._gY, function (t, i) {
            var n = a[t.id] * f;
            0 === i && (r = e ? -n / 2 : -n), t._mJ = r + n / 2, t._mI = n, r += n
          }, this)
        }
        return [s, n._mI]
      } [p](this, t)) : null
    },
    _fZ: function (t) {
      var i = this._8C(t);
      if (!i) return this._nQ = this._iC;
      var n = i[0],
        e = i[1],
        s = this[WP][HP](this._nS, this._mL);
      if (s < this._iC && (s = this._iC), this._fY = s, this._iC + n > s && (s = this._iC + n), n && 1 < this._9E && e < Math.PI) {
        var h = n / Math.sin(e / 2);
        s < h && (s = h)
      }
      return this._lG = s, this._nQ = s + n, this._nS && this._gY && this[WP][VP] == yU && aN(this._gY, function (t) {
        var i = t._nQ;
        1 == t._9E && (i /= 2);
        var n = this._iC + i,
          e = t._mI;
        if (e && e < Math.PI) {
          var s = i / Math.sin(e / 2);
          i < s && (i = s)
        }
        i < n && (i = n), t._e3 = i
      }, this), this._nS && !t || this._iE(0), this._nQ
    },
    _6J: function (h, r, a, o, f) {
      if (this._nS && (o[this._nS.id] = {
          x: h,
          y: r,
          node: this._nS
        }, f && f[Id](h - this._iC / 2, r - this._iC / 2, this._iC, this._iC)), this._gY)
        if (this._nS || 1 != this._gY.length) {
          a = a || 0;
          var c = this._lG,
            u = this._fY;
          aN(this._gY, function (t) {
            var i = c;
            t._e3 && (i = Math.max(u, t._e3));
            var n = t._mJ + a,
              e = h + i * Math.cos(n),
              s = r + i * Math.sin(n);
            t._6J(e, s, a, o, f)
          }, this)
        } else this._gY[0]._6J(h, r, a, o, f)
    }
  }, dN(dU, aU);
  var EU = function (t) {
    vN(this, EU, arguments)
  };
  dN(EU, mU);
  var xU = function (t, i) {
    (this[jP] = t) == (this[XP] = i) ? (this[Ud] = !0, this._mN = t._lP) : this._mN = new hB, this._9F = [], this._iF = sB.EDGE_BUNDLE_EXPANDED
  };

  function pU(t) {
    t.fx -= t.x * this[oD], t.fy -= t.y * this[oD]
  }

  function TU(t) {
    if (0 != t.k) {
      var i = this._dC,
        n = t[Fd],
        e = t.to,
        s = e.x - n.x,
        h = e.y - n.y,
        r = s * s + h * h,
        a = Math.sqrt(r) || .1,
        o = (a - i) * t.k * this.elastic,
        f = (o /= a) * s,
        c = o * h;
      e.fx -= f, e.fy -= c, n.fx += f, n.fy += c
    }
  }

  function mU(t) {
    vN(this, mU, arguments)
  }
  sB.EDGE_BUNDLE_EXPANDED = !0, xU[_] = {
    node1: null,
    node2: null,
    _mN: null,
    _iF: sB[ZP],
    _9F: null,
    _iG: null,
    agentEdge: null,
    _oBF: function (i, n, e) {
      this._mN[Mt](function (t) {
        if (!e || t[Xv] == e || t.fromAgent == e) return i[p](n, t)
      })
    },
    _6L: 0,
    _6M: 0,
    _jZ: function (t, i) {
      if (!1 === this._mN.add(t)) return !1;
      i == this[jP] ? this._6L++ : this._6M++, this[ke] ? this._18(t) : this._oAH = !0
    },
    _e5: function (t, i) {
      if (!1 === this._mN.remove(t)) return !1;
      i == this.node1 ? this._6L-- : this._6M--, this._18(t), this._mN[Mt](function (t) {
        t[lv] = !0, t[sv] = !0
      }, this)
    },
    _18: function (t) {
      this[zP] = !0, this._6W = !0, t[lv] = !0, t.__4H = !0
    },
    invalidate: function () {
      this._d7()
    },
    _d7: function () {
      this._6W || (this._6W = !0, this._mN[Mt](function (t) {
        t._edgeBundleInvalidateFlag = !0
      }))
    },
    isEmpty: function () {
      return this._mN[yn]()
    },
    isPositiveOrder: function (t) {
      return this.node1 == t[Xv] || this.node1 == t[Wd]
    },
    canBind: function (t) {
      return t && this._6W && this[ro](t), 1 < this._mN[N] && 1 < this._9F.length
    },
    _j6: function (t) {
      return this._9F[b](t)
    },
    getYOffset: function (t) {
      return this._iG[t.id]
    },
    _5B: function (t) {
      if (this[uO]()) {
        var i = {},
          n = this._9F[N];
        if (!(n < 2)) {
          var e = 0,
            s = this._9F[0];
          i[s.id] = 0;
          for (var h = 1; h < n; h++) s = this._9F[h], e += t.getStyle(s, WY[ux]) || hW[WY[ux]], i[s.id] = e;
          if (!this[Ud] && e) {
            var r = e / 2;
            for (h = 0; h < n; h++) i[(s = this._9F[h]).id] -= r
          }
          this._iG = i
        }
      } else this._iG = {}
    },
    _oBG: function (t) {
      return this._iF != t && (this._iF = t, this._d7(), !0)
    },
    reverseExpanded: function () {
      return this[KP](!this._iF)
    },
    _1D: function () {
      var i;
      this._9F[N] = 0, this._mN[Mt](function (t) {
        if (t[Hd]()) {
          if (!this[lO](t)) return void(i = i || []).push(t);
          this._9F[M](t)
        }
      }, this), i && (this._9F = i[B](this._9F))
    },
    _fC: function (t) {
      return t == this[aI] || !this.canBind() || this._iF
    },
    validate: function (t) {
      this._6W = !1, this._mN[Mt](function (t) {
        t[lv] = !1
      }), this[zP] && (this._1D(), this._d7BindableFlag = !1), 1 < this._9F[N] && this.sortBindingEdges instanceof Function && this.sortBindingEdges(this._9F);
      var i = this._iF,
        n = !this[uO]() || i;
      if (aN(this._9F, function (t) {
          t._$s = !0, (t._jCInBundle = n) && (t.__4H = !0)
        }, this), !n) return this[JP](this._9F[0], t), this[aI][QP] = !0, void(this[aI][sv] = !0);
      this[JP](null, t), this._5B(t)
    },
    _o9V: function (t, i) {
      if (t != this[aI]) {
        var n = this[aI];
        return this.agentEdge = t, i && i._55(new MB(this, aI, t, n)), !0
      }
    }
  }, qN(xU[_], {
    bindableEdges: {
      get: function () {
        return this._9F
      }
    },
    edges: {
      get: function () {
        return this._mN._kE
      }
    },
    length: {
      get: function () {
        return this._mN ? this._mN[N] : 1
      }
    },
    expanded: {
      get: function () {
        return this._iF
      },
      set: function (t) {
        if (this._iF == t) return !1;
        this._iF = t, this._d7()
      }
    }
  }), mU.prototype = {
    appendNodeInfo: function (t, i) {
      i[tD] = t[fD] || 1, i.fx = 0, i.fy = 0, i.vx = 0, i.vy = 0
    },
    appendEdgeInfo: function (t, i) {
      i.k = t[cD] || 1
    },
    setMass: function (t, i) {
      t[fD] = i, this[TP] && this[TP][IP] && (t = this.layoutDatas[IP][t.id]) && (t[tD] = i)
    },
    setElasticity: function (t, i) {
      t[cD] = i, this[TP] && this[TP][Kv] && (t = this.layoutDatas[Kv][t.id]) && (t.k = i)
    },
    _dC: 50,
    _jI: .5,
    timeStep: .05,
    repulsion: 50,
    attractive: .1,
    elastic: 3,
    _mZ: 1e3,
    _kQ: function (t) {
      return this._mZ + .3 * (t - this._mZ)
    },
    _mX: function (t, i) {
      Date.now();
      var n = this[TP][IP];
      for (var e in n) {
        var s = n[e];
        i && (s.x += Math[X]() - .5, s.y += Math[X]() - .5), pU[p](this, s)
      }
      var h = this.layoutDatas[uD];
      if (h)
        for (var e in h) {
          var r = h[e][y],
            a = 0,
            o = 0;
          r.forEach(function (t) {
            a += t.x, o += t.y
          }), a /= r[N], o /= r[N];
          var f = 10 * this[oD];
          r[Mt](function (t) {
            t.fx -= (t.x - a) * f, t.fy -= (t.y - o) * f
          })
        }
      var c = this[_D];
      for (var e in (c = c || (this[_D] = function () {
          var l = -1e6;

          function e(t, i) {
            this[ER] = t, this.body = i
          }

          function t() {
            this.stack = [], this[qP] = 0
          }

          function i() {
            this.body = null, this.quads = [], this[tD] = 0, this[iD] = 0, this.massY = 0, this.left = 0, this.top = 0, this[Ft] = 0, this[Bt] = 0, this[nD] = !1
          }

          function g() {
            var t;
            return n[v] ? ((t = n[v])[eD][0] = null, t[eD][1] = null, t[eD][2] = null, t.quads[3] = null, t[yo] = null, t[tD] = t[iD] = t[sD] = 0, t[Kt] = t[Bt] = t.top = t[Ft] = 0, t[nD] = !1) : (t = new i, n[v] = t), ++v, t
          }

          function E(t, i) {
            var n = Math.abs(t.x - i.x),
              e = Math.abs(t.y - i.y);
            return n < 1e-8 && e < 1e-8
          }

          function d(t) {
            for (x[hD](), x.push(p, t); !x[yn]();) {
              var i = x.pop(),
                n = i.node,
                e = i[yo];
              if (n[nD]) {
                var s = e.x,
                  h = e.y;
                n.mass = n[tD] + e[tD], n.massX = n.massX + e[tD] * s, n.massY = n[sD] + e[tD] * h;
                var r = 0,
                  a = n[Kt],
                  o = (n[Bt] + a) / 2,
                  f = n.top,
                  c = (n.bottom + f) / 2;
                if (o < s) {
                  r += 1;
                  var u = a;
                  o += (a = o) - u
                }
                if (c < h) {
                  r += 2;
                  var _ = f;
                  c += (f = c) - _
                }
                var l = n[eD][r];
                l || ((l = g())[Kt] = a, l.top = f, l[Bt] = o, l[Ft] = c, n.quads[r] = l), x[M](l, e)
              } else if (n[yo]) {
                var d = n.body;
                if (n[yo] = null, n[nD] = !0, E(d, e)) {
                  if (n[Bt] - n.left < 1e-8) return;
                  do {
                    var v = Math.random(),
                      b = (n[Bt] - n[Kt]) * v,
                      y = (n[Ft] - n.top) * v;
                    d.x = n[Kt] + b, d.y = n.top + y
                  } while (E(d, e))
                }
                x.push(n, d), x[M](n, e)
              } else n[yo] = e
            }
          }
          t[_] = {
            isEmpty: function () {
              return 0 === this[qP]
            },
            push: function (t, i) {
              var n = this[rD][this[qP]];
              n ? (n[ER] = t, n[yo] = i) : this[rD][this[qP]] = new e(t, i), ++this[qP]
            },
            pop: function () {
              if (0 < this[qP]) return this[rD][--this[qP]]
            },
            reset: function () {
              this[qP] = 0
            }
          };
          var u = [],
            x = new t,
            n = [],
            v = 0,
            p = g();
          return {
            init: function (t, i) {
              l = i;
              var n, e = Number[zt],
                s = Number[zt],
                h = Number[aD],
                r = Number[aD],
                a = t,
                o = a[N];
              for (n = o; n--;) {
                var f = a[n].x,
                  c = a[n].y;
                f < e && (e = f), h < f && (h = f), c < s && (s = c), r < c && (r = c)
              }
              var u = h - e,
                _ = r - s;
              for (_ < u ? r = s + u : h = e + _, v = 0, (p = g())[Kt] = e, p[Bt] = h, p.top = s, p[Ft] = r, n = o; n--;) d(a[n])
            },
            update: function (t) {
              var i, n, e, s, h = u,
                r = 1,
                a = 0,
                o = 1;
              for (h[0] = p; r;) {
                var f = h[a],
                  c = f[yo];
                --r, a += 1, c && c !== t ? (n = c.x - t.x, e = c.y - t.y, 0 === (s = Math[Gt](n * n + e * e)) && (n = (Math.random() - .5) / 50, e = (Math.random() - .5) / 50, s = Math.sqrt(n * n + e * e)), (i = l * c[tD] * t.mass / (s * s)) < -1e3 && (i = -1e3), i /= s, t.fx = t.fx + i * n, t.fy = t.fy + i * e) : (f[tD] || (f[tD] = 1), n = f.massX / f[tD] - t.x, e = f[sD] / f[tD] - t.y, 0 === (s = Math[Gt](n * n + e * e)) && (n = (Math[X]() - .5) / 50, e = (Math.random() - .5) / 50, s = Math[Gt](n * n + e * e)), (f[Bt] - f.left) / s < .8 ? ((i = l * f[tD] * t.mass / (s * s)) < -1e3 && (i = -1e3), i /= s, t.fx = t.fx + i * n, t.fy = t.fy + i * e) : (f[eD][0] && (h[o] = f.quads[0], r += 1, o += 1), f[eD][1] && (h[o] = f[eD][1], r += 1, o += 1), f[eD][2] && (h[o] = f[eD][2], r += 1, o += 1), f[eD][3] && (h[o] = f.quads[3], r += 1, o += 1)))
              }
            }
          }
        }())).init(this[TP].nodesArray, -this[lD] * this[lD] * this[lD]), n) c[iL](n[e]);
      if (this[dD]) {
        var u = this.layoutDatas[Kv];
        for (var e in u) TU[p](this, u[e])
      }
      return this._n1(t)
    },
    _n1: function (t) {
      var i = this[TP][vD],
        n = (this[TP].currentEnergy, this[TP][IP]),
        e = (t = this[AP], 0),
        s = this._jI;
      for (var h in n) {
        var r = n[h],
          a = r.fx / r[tD],
          o = r.fy / r[tD],
          f = r.vx += a * t,
          c = r.vy += o * t;
        r.x += f * t, r.y += c * t, e < i && (e += 2 * (f * f + c * c)), r.fx = 0, r.fy = 0, r.vx *= s, r.vy *= s
      }
      return i <= (this[TP][bD] = e)
    }
  }, dN(mU, lU), wF[yD] = mU;
  var wU = function (t) {
    this[pR] = t
  };

  function OU(i, n, e, s, h, r) {
    if (n instanceof FB) return i(n, e, s, h, r), n;
    if (n instanceof yW) {
      var a = new hB;
      n[QO][Mt](function (t) {
        n[mI](t) && (t._jB() && t._iF && t.hasChildren() ? t[ab] && (t.$location[qb] = !1) : a.add(t))
      }), n = a
    } else if (Array.isArray(n)) n = new hB(n);
    else if (!(n instanceof hB)) throw new Error(wD);
    return (o = n, c = new hB, o.forEach(function (t) {
      var i, n;
      t instanceof wY && (n = !1, t[TD](function (t) {
        if (o.contains(t) && !t[Ud]()) return !(n = !0)
      }), n ? !f && (i = !1, t[mD](function (t) {
        if (o[Fn](t) && !t.isLooped()) return !(i = !0)
      }), i) && (f = t) : c.add(t))
    }), c.isEmpty() && f && c.add(f), n = c)[Mt](function (t) {
      i(t, e, s, h, r)
    }), n;
    var o, f, c
  }
  wU[_] = {
    oldLocations: null,
    _g0: null,
    duration: 700,
    animationType: xF[gD],
    _8D: function (t) {
      if (this._g0 = t, this[ED] = {}, t)
        for (var i in t) {
          var n = t[i][ER];
          this.oldLocations[i] = {
            x: n.x,
            y: n.y
          }
        }
    },
    setLocation: function (t, i, n) {
      t[BA](i, n)
    },
    forEach: function (t, i) {
      for (var n in this[pR]) {
        var e = this[ED][n],
          s = this[pR][n];
        t[p](i, e, s)
      }
    },
    _lH: function (h, t, i, n) {
      this[Mt](function (t, i) {
        var n = i.node,
          e = t.x + (i.x - t.x) * h,
          s = t.y + (i.y - t.y) * h;
        this[BA](n, e, s)
      }, this)
    },
    stop: function () {
      this[xD] && this[xD]._n3()
    },
    start: function (t) {
      this._o9nimate ? (this[xD]._n3(), this[xD]._jL = this[IS], this[xD]._fVType = this.animationType, this[xD][pD] = this._onfinish) : this[xD] = new pF(this._lH, this, this.duration, this[MS]), this[xD]._lZ(t)
    }
  }, qN(wU.prototype, {
    locations: {
      get: function () {
        return this._g0
      },
      set: function (t) {
        this._g0 != t && this._8D(t)
      }
    }
  });
  var AU = function (t, i, n, e, s) {
      return OU(SU, t, i, n, e, s)
    },
    IU = function (t, i, n, e, s) {
      return OU(kU, t, i, n, e, s)
    };
  RY[_].forEachByTopoDepthFirstSearch = function (t, i, n, e) {
    AU(this, t, i, n, e)
  }, RY[_][OD] = function (t, i, n, e) {
    t instanceof Object && 1 == arguments[N] && (i = t.scope), IU(this, t, i, n, e)
  }, wF[AD] = AU, wF[OD] = IU;
  var SU = function (t, i, n, e, s, h, r, a) {
    ! function i(n, e, s, h, r, a, o, t) {
      n[ID] = a, h || e[p](s, n, t, o), MU(n, function (t) {
        i(t, e, s, h, r, a, o + 1, n)
      }, t, r, a), h && e.call(s, n, t, o)
    }(t, i, n, e, s, {}, 0)
  };

  function MU(n, e, s, t, h) {
    t ? n.forEachEdge(function (t) {
      var i = t[SD](n);
      i != s && i[ID] != h && e(i, n)
    }, this, !0) : n.forEachOutEdge(function (t) {
      var i = t.toAgent;
      i != s && i._marker != h && e(i, n)
    })
  }
  var kU = function (t, i, n, e, s) {
    ! function t(i, e, s, h, r, a, o) {
      var f, c = i[N];
      i[Mt](function (t, i) {
        var n = t.v;
        n._marker = a, h || e[p](s, n, t[MD], o, i, c), MU(n, function (t) {
          f = f || [], t[ID] = a, f[M]({
            v: t,
            _from: n
          })
        }, n, r, a)
      }), f && t(f, e, s, h, r, a, o + 1), h && i[Mt](function (t, i) {
        e[p](s, t.v, t[MD], o, i, c)
      })
    }([{
      v: t
    }], i, n, e, s, {}, 0)
  };
  wF[kD] = JN, wF.log = nB, wF.error = eB, wF[CD] = function (t) {
    u[et] && console[CD](t)
  }, wF[LD] = ON, wF[RD] = wN, wF[PD] = SN, wF.isGecko = MN, wF[DD] = kN, wF[ND] = LN, wF.isChrome = CN, wF.isMac = RN, wF[BD] = hW, wF.Defaults = sB, wF.Styles = WY, wF[FD] = OF, wF.Graphs = jG, wF[GD] = yW, wF[$D] = NY, wF.ElementUI = QY, wF[YD] = sW, wF[mM] = eW, wF.LabelUI = iW, wF.ImageUI = tW, wF[WD] = IY, wF[UD] = NG, wF.Gradient = xG, wF[HD] = sU, wF.Element = bY, wF[ZO] = wY, wF[QA] = xY, wF[VD] = RY, wF[jD] = xU, wF[XD] = uU, wF[P_] = il;
  var CU = ZD;
  return wF.version = zD, wF[KD] = JD, wF[G_] = "Copyright © 2020 Qunee.com", wF.css = jB, wF[QD] = {
    draw: function (t, i) {}
  }, nB = function () {}, wF[qD] = tN, wF
}(window, document);
export default Q;